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

Why My Back Button not working Properly

我有两个活动 Activity-A 和 Activity-B,我使用 Intent 将值从 Act-A 传递到 Act B。一切都很好。当我打开我的 Act-B 时,我从 Act-A 中获得价值,现在问题是当单击“后退”按钮(两次)时,只有我得到我的 Act-A。当我按一次相同的 activity 它没有在我的导航上导航我 Act-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);
            }

Act-B:

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

您的问题出在这段代码中:

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

你开始 Activity-B 两次,第一次没有任何额外内容,第二次在 passmyValue().

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

只需删除这些行:

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

在这段代码中:

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

                    }

删除第一个意图,因为您要启动 Activity 两次。这反过来意味着你的 Activity B 在没有额外意图的情况下启动一次,并且最重要的是它。按回关闭第一个,再次关闭第二个实例。只需删除这些行并像这样启动 B activity:

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

所以我想你一定会玩ANDROID INTENTS. And this might be the Similar Question to you。我希望它能帮助你如果没有请随时回复。 :) :)

您刚刚新建了两个意图并启动了两个活动,即 Activity-B 和 Activity-B。实际上,您在任务堆栈中有三个活动,它们是 Act-A、Act-B、Act-B。

不需要两次启动相同的activity。试试下面的代码,我认为它有帮助。

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);
}

在 onClick() 中,您开始 activity-B by

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

并且您再次在 PassMyValue 方法中调用 startActivity(intent),其中 intenti。所以你开始 Activity-B 2 次。 您需要通过删除

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