按回键时保持活动状态

时间:2016-03-20 07:10:01

标签: android android-activity layout back

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

我在一个Activity中使用了setContentView(R.layout.layout1)和setContentView(R.layout.layout2)。

我想要点击回来,留在活动中,然后从 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 ",没有问题,但下一次该阶段不是" "我有一个错误,也许是因为我创建了FrameLayout agane。我该怎么做才能解决这个问题?

![enter image description here

这是我的错误:

![enter image description here

更新

最后,正确的代码错误在这里:

![![enter image description here

2 个答案:

答案 0 :(得分:1)

您是否已尝试覆盖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);
  }

希望您能够根据自己的需要理解和编辑。

答案 1 :(得分:0)

覆盖活动中的onBackPressed()并检查layout2独有的viewId

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