硬件后退按钮不会让我回到上一页

时间:2014-01-07 10:37:22

标签: java android xml hardware

我有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();
                }
            });

        }

    }

4 个答案:

答案 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,

然后你将能够显示第一页,否则它将始终转到上一个活动,而不是你正在寻找它。