为什么我的后退按钮不能正常工作

时间:2016-07-29 09:31:01

标签: android android-intent back-stack

我有两项活动-A和活动-B,我使用Intent将Act-A的值传递给Act B.一切都很好。当我打开我的Act-B时,我从Act-A获得价值,现在问题是当点击后退按钮(两次)然后我才得到我的Act-A。当我按下一次相同的活动时,它不会导航我 法-A

法-A:

    btn_add_city.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        // Launching Add_City Screen
                        Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);
passmyValue();

                    }
                });

        public void passmyValue(){

                intent = new Intent(getApplicationContext(),Act-B.class);
                intent.putExtra("name", receive.getText().toString());
                startActivity(intent);
            }

法-B:

receive = (TextView)findViewById(R.id.userHidden);
receive.setText(getIntent().getStringExtra("name"));

5 个答案:

答案 0 :(得分:2)

所以我认为你必须能够和ANDROID INTENTS一起玩。这可能是Similar Question to you。我希望它可以帮助你,如果没有,请随时回复。 :):)

答案 1 :(得分:1)

您的问题出现在以下代码段中:

// Launching Add_City Screen
Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);
passmyValue();

你开始活动B两次,第一次没有任何额外内容,第二次在passmyValue()内。

作为您的Activit-B,我认为,使用默认启动模式,然后您有2个Activity-B实例。所以你的后台堆栈看起来像:Activity-A - >活动-B - >活动-B。因此,您需要按两次返回活动A。

只需删除这些行:

Intent i = new Intent(getApplicationContext(), Acti-B.class);
startActivity(i);

答案 2 :(得分:1)

在这段代码中:

@Override
                    public void onClick(View view) {
                        // Launching Add_City Screen
                        Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);
passmyValue();

                    }

删除第一个意图因为您重新启动活动两次。这反过来意味着您的活动B在没有额外意图的情况下启动一次,并且最重要的是它。按后退关闭第一个,再次关闭第二个实例。只需删除行并启动B活动,如下所示:

@Override
   public void onClick(View view) {
   passmyValue();
}

答案 3 :(得分:1)

在onClick()中,您将通过

启动活动-B
Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);

并且您再次在PassMyValue方法中调用startActivity(intent),其中 意图 i 相同。所以你开始活动B 2次。 你需要通过删除

来解决它
Intent i = new Intent(getApplicationContext(), 
    Acti-B.class);
                        startActivity(i);

答案 4 :(得分:0)

您只需要新的两个意图并启动两个活动,即Activity-B和Activity-B。实际上你在任务堆栈中有三个活动,它们是Act-A,Act-B,Act-B。

没有必要两次开始相同的活动。尝试以下代码,我认为这有帮助。

btn_add_city.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // Launching Add_City Screen
        // It's no need to start the same activity for twice
        passmyValue();
    }
});

public void passmyValue(){
    intent = new Intent(getApplicationContext(),Act-B.class);
    intent.putExtra("name", receive.getText().toString());
    startActivity(intent);
}