按返回键时停留在 activity

stay on activity when press back key

我有两个布局 (layout1,layout2) 而这些定义在一个 Activity

我在一个 Activity.

中使用了 setContentView(R.layout.layout1) 和 setContentView(R.layout.layout2)

我想点击返回时,停留在 Activity 上,然后从 layout2 返回到 layout1

public class Anatomy1 extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout1);    //*****************

        LinearLayout num1 = (LinearLayout) findViewById(R.id.num1);
        num1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                setContentView(R.layout.layout2);        //*****************
                final FrameLayout layout = (FrameLayout) findViewById(R.id.my_frame);
                final TouchImage iv = new TouchImage(getApplicationContext());
                iv.setImageResource(R.drawable.theImage);
                layout.addView(iv);
            }
        });
    }
}

更新

你的代码很好,但我有问题。

在第一阶段,金额等于“null”,没有问题,但下一次那个阶段就不是“null" 我有一个错误,可能是因为我创建了 FrameLayout agane。我该怎么做才能解决这个问题?

这是我的错误:

更新

终于对了,代码的bug在这里:

您是否尝试过覆盖 onBackPressed 并且不在其中放置任何代码,甚至不包括 super.onBackPressed(),就像这里

@Override
public void onBackPressed() {
 //No codes at all
}

更新:

根据您的要求,我已经尝试过,只是您的 Activity 看起来像这样, 默认设置 layout2

boolean isLayout2 = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if(getIntent().getExtras() != null) {
            if (getIntent().getStringExtra("layout").equalsIgnoreCase("layout2")) {

                setContentView(R.layout.activity_main);
                isLayout2 = false;

            }
        }
        else{
            isLayout2 = true;
            setContentView(R.layout.activity_main2);

        }



 @Override
    public void onBackPressed() {

        if(isLayout2){

            backToLayout1();
        }
        else{
          super.onBackPressed();
        }

    }


  private void backToLayout1() {
    Intent intent = getIntent();
    intent.putExtra("layout","layout2");
    finish();
    startActivity(intent);
  }

希望您能理解并根据需要进行编辑。

重写 activity 中的 onBackPressed() 并检查布局 2 独有的 viewId

http://developer.android.com/reference/android/app/Activity.html#onBackPressed()