使用多个活动并保持相同的意图值

时间:2014-03-14 11:20:33

标签: android android-intent android-fragments android-activity

我有三项活动' a'' b'和' c'如下所示。 活动' a'当按钮(button_a)被点击到活动' b时,发送一个值(即1)。 活动' 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);
            }
        });  

1 个答案:

答案 0 :(得分:0)

您正在从“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();
        }
});  

已添加:请参阅 Task and Back Stack