I want to pass some data between classes but i cant get it working. Getting NullPointerException at line home.adapter.updateStatus();
Main class
public class HomeScreen extends Activity implements OnClickListener{
SocialAuthAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
adapter = new SocialAuthAdapter(new ResponseListener());
adapter.addProvider(Provider.TWITTER, R.drawable.button_twitter);
}
}
Helper class
public class ResponseListener implements DialogListener {
HomeScreen home = new HomeScreen();
public void onComplete(Bundle values) {
home.adapter.updateStatus("update");
}
}
我建议适配器没有被初始化,这只能意味着onCreate()没有被调用...
When Activity is started for the first time only once the onCreate() method will be called. It will not be created when you create object for your activity.
you instantiated HomeScreen home = new HomeScreen();
by constructor, but in your HomeScreen class, you instantiated adapter
in a method onCreate()
. did your HomeScreen constructor call this method?
If not, adapter is null, so you got NPE.
You should move:
adapter = new SocialAuthAdapter(new ResponseListener());
adapter.addProvider(Provider.TWITTER, R.drawable.button_twitter);
to HomeScreen
constructor like this:
public class HomeScreen extends Activity implements OnClickListener {
public SocialAuthAdapter adapter;
public HomeScreen() {
adapter = new SocialAuthAdapter(new ResponseListener());
adapter.addProvider(Provider.TWITTER, R.drawable.button_twitter);
}
Change this line in your code
adapter = new SocialAuthAdapter(new ResponseListener(HomeScreen.this));
Helper class,
public class ResponseListener implements DialogListener {
private HomeScreen context;
public ResponseListener(HomeScreen homescreen) {
context = homescreen;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.