为什么我的背部按钮不能正常工作



我有两个Activity-a和Activity-B,我使用Intent将Value从Act-a传递到ActB。一切都很好。当我打开我的Act-B时,我从Act-A中获得值,现在的问题是,当点击后退按钮(两次)时,只有我获得Act-A。当我按下一次相同的活动时,它没有在我的Act-A。

Act-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"));

所以我认为你必须能够玩ANDROID INTENTS。这可能是一个与你相似的问题。我希望这对你有帮助,如果没有,请随时回复

您的问题在于以下代码片段:

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

您启动Activity-B两次,第一次没有任何额外功能,第二次在passmyValue()内。

我认为,由于您的Activit-B使用默认启动模式,因此您有两个ActivityB实例。因此,您的后堆栈将看起来像:Activity-A->Activity-B->Activity-B。因此,您需要按两次返回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();
                    }

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

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

在onClick()中,您正在通过启动活动-B

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

并且您再次在PassMyValue方法中调用startActivity(intent),其中intenti相同。因此,您启动了Activity-B两次。你需要通过删除来修复它

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

您只需新建两个意图并启动两个活动,即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);
}

最新更新