以下に示すように、「a」、「b」、「c」の3つのアクティビティがあります。アクティビティ 'a'は、ボタン(button_a)がクリックされたときに値(つまり1)をアクティビティ 'b'に送信します。
アクティビティ「b」は値を取得して表示します。後でボタン(一時停止)をクリックすると、アクティビティ「c」が表示されます。アクティビティ「c」では、再生ボタンをクリックしても、値(つまり、1)は表示されません。
では、再生ボタンがクリックされた後、アクティビティ「b」に値を表示するにはどうすればよいですか?
アクティビティ 'a':
Button button_a = (Button) findViewById(R.id.button_a);
button_a.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(aActivity.this, bActivity.class);
i.putExtra("value", "1");
startActivity(i);
}
});
Button button_b = (Button) findViewById(R.id.button_b);
button_b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(aActivity.this, bActivity.class);
i.putExtra("value", "2");
startActivity(i);
}
});
アクティビティ 'b':
TextView levelName = (TextView) findViewById(R.id.value);
Intent i = getIntent();
String level = i.getStringExtra("value");
levelName.setText(level);
Button pause = (Button) findViewById(R.id.pause);
pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(b.this, c.class);
startActivity(i);
}
});
アクティビティ 'c':
Button play = (Button) findViewById(R.id.play);
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent(c.this, b.class);
startActivity(i);
}
});
アクティビティの新しいインスタンスを作成している「c」アクティビティから「b」アクティビティを再度呼び出しているため、この時点でアクティビティスタックは次のようになります。
a-> b(値があります)-> c-> b(値がないbの新しいインスタンス)
したがって、「b」アクティビティを再度ロードしようとするのではなく、アクティビティ「c」を終了するだけで、アクティビティスタックは次のようになります。
a-> b(値があります)
例
Button play = (Button) findViewById(R.id.play);
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
追加:タスクとバックスタックを参照してください
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加