我有2个xml页面,点击下一个按钮后从主页面进入第二页,但是当我按下硬件后退按钮时。它不会回到主页面。
如何添加硬件后退按钮的代码?
在Android 4.3上进行测试。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Main Page" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:text="Go to Page 1" />
</RelativeLayout>
java class:
package com.example.linktestfyp;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent myIntent = new Intent();
myIntent.setAction(Intent.ACTION_VIEW);
myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
setContentView(R.layout.main1);
Toast.makeText(getApplicationContext(), "Button 1 clicked",
Toast.LENGTH_LONG).show();
}
});
}
}
答案 0 :(得分:1)
在您应该调用startActivity(intent);
的活动之间导航,而不是更改相同活动的contentView
。
你应该创建两个活动:Activity1(将显示main.xml
布局)和Activity2(将显示main1.xml
布局),当用户在Activity2中并按下后退按钮时,Activity1将由系统再次显示自动,并且将销毁Activity2。
示例:
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
请参阅本教程,了解有关how to switch between activities的演示示例应用程序,您可以在本教程结束时下载该应用程序。
注意:不要忘记在清单文件中声明您的活动。
答案 1 :(得分:0)
这可能对你有帮助..
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
//do your stuff
}
return super.onKeyDown(keyCode, event);
}
答案 2 :(得分:0)
您可能需要两项活动(见下文)。当您点击MainActivity
按钮时,MainActivity1
将会启动并显示R.layou.main1
布局。如果单击后退按钮,MainActivity1
将销毁,MainActivity
将恢复(默认情况下,您无需对此进行编程)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, MainActivity2.class));
}
}
}
public class MainActivity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
}
}
答案 3 :(得分:0)
您没有更改活动,因此当您向后退时,第一页不会显示给您,
你应该在onbackpressed()方法中使用setcontentview,
然后你将能够显示第一页,否则它将始终转到上一个活动,而不是你正在寻找它。