0

私は自分のモデルを次のように抽象化します: まず、UserInfoユーザー情報を保持するクラスがあります:

public class UserInfo extends Application{
private int userid;
public void setUserId(int id)
{
    userid=id;
}
public int  getUserId()
{
    return userid;
}

}

次に MainActivity で:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    userinfo=(UserInfo)getApplication();
    userinfo.setUserId(1354);
    ....
    Intent intent=new Intent(MainActivity.this,VoteActivity.class);                 
                startActivity(intent);
}
public
@Override void onResume()
{
    super.onResume();
    TextView text=(TextView)MainActivity.this.findViewById(R.id.usernameText);
    text.setText(userinfo.getUserId()+" ");
}

そして VoteActivity では:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_vote);        
    userinfo=(UserInfo)getApplication(); 
    Button back=(Button)findViewById(R.id.backButton);
    back.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            userinfo.setUserId(-100);
            Intent intent=new        Intent(VoteActivity.this,MainActivity.class);
            startActivity(intent);

        }});

}

結果は次のとおりです。MainActivity が最初に実行されたとき、UserInfo のユーザー ID は 1354 です。また、VoteActivity が最初に実行されたとき、UserInfo のユーザー ID も 1354 です。ただし、VoteActivity から MainActivity に戻ると、ユーザー ID は 1354 のままで、-100 である必要があります。このアプリケーション コンテキストの使用の何が問題なのですか?

4

3 に答える 3

1

onClick メソッドで新しいアクティビティを開始しています:

Intent intent=new        Intent(VoteActivity.this,MainActivity.class);
        startActivity(intent);

そして、 MainActivity に ID を直接設定します。

 userinfo.setUserId(1354);

そのため、(1354) が得られます。(MainActivity を開始する代わりに) クリックで終了を呼び出す必要があります。

アクティビティのスタックは次のようになります:MainActivity - VoteActivity - MainActivityそして、あなたはそれを次のようにしたいと思います:MainActivityあなたのButton

@Override
        public void onClick(View arg0) {
            userinfo.setUserId(-100);
            finish();

        }});
于 2013-05-14T14:31:47.883 に答える
0

どうやって戻ってきますMainActivityか?デバイスの戻るボタンを押すか、ボタンをクリックしますか? デバイスの戻るボタンを押しても onClickListener は呼び出されないため、id は変わりません。

于 2013-05-14T14:37:38.503 に答える
0
@Override
public void onClick(View arg0) {
    userinfo.setUserId(-100);
    Intent intent=new        Intent(VoteActivity.this,MainActivity.class);
    startActivity(intent);

}});

戻るボタンをクリックすると、MainActivity が再起動します。MainActivity onCreate が再度実行されます。MainActivityとしてフラグが立てられていsingleInstanceますか?

于 2013-05-14T14:37:47.717 に答える