简体   繁体   中英

issue using constructor in java

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM