按返回键时停留在 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()
我有两个布局 (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()