0

クラス間でデータを渡したいのですが、うまくいきません。行で NullPointerException を取得するhome.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

Activity が初めて開始されるときは、onCreate() メソッドが 1 回だけ呼び出されます。アクティビティのオブジェクトを作成しても作成されません。

于 2013-01-29T14:18:53.127 に答える
1

アダプターが初期化されていないことをお勧めします。これは、 onCreate() が呼び出されていないことを意味するだけです...

于 2013-01-29T14:15:08.377 に答える
0

コンストラクターでインスタンス化HomeScreen home = new HomeScreen();しましたが、HomeScreen クラスではadapterメソッドでインスタンス化しましたonCreate()。HomeScreen コンストラクターはこのメソッドを呼び出しましたか?

そうでない場合、アダプターは null であるため、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 に答える