0

我想在类之间传递一些数据,但我无法让它工作。在线获取 NullPointerExceptionhome.adapter.updateStatus();

主班

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);
    }
}

助手类

 public class ResponseListener implements DialogListener {

HomeScreen home = new HomeScreen();

    public void onComplete(Bundle values) {
    home.adapter.updateStatus("update");
    }
 }
4

5 回答 5

1

我建议适配器没有被初始化,这只能意味着 onCreate() 没有被调用......

于 2013-01-29T14:15:08.377 回答
1

当第一次启动 Activity 时,只会调用一次 onCreate() 方法。当您为您的活动创建对象时,它不会被创建。

于 2013-01-29T14:18:53.127 回答
0

HomeScreen home = new HomeScreen();由构造函数实例化,但在 HomeScreen 类中,您adapter在方法中实例化onCreate()。您的 HomeScreen 构造函数是否调用了此方法?

如果不是,则适配器为空,因此您获得了 NPE。

于 2013-01-29T14:15:26.510 回答
0

你应该搬家:

adapter = new SocialAuthAdapter(new ResponseListener());
adapter.addProvider(Provider.TWITTER, R.drawable.button_twitter);

像这样HomeScreen构造函数:

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);
    }
于 2013-01-29T14:15:52.167 回答
0

在您的代码中更改此行

 adapter = new SocialAuthAdapter(new ResponseListener(HomeScreen.this));

助手类,

 public class ResponseListener implements DialogListener {
 private HomeScreen context;
 public ResponseListener(HomeScreen homescreen) {
    context = homescreen;

}


}
于 2013-01-29T14:16:35.793 回答