我有两个布局(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。我该怎么做才能解决这个问题?
这是我的错误:
更新
最后,正确的代码错误在这里:
答案 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()