Аппаратная кнопка возврата не возвращает меня на предыдущую страницу

У меня есть 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-класс:

    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 ответа

Для навигации между действиями вы должны позвонить startActivity(intent); и не меняя contentView той же деятельности. Вы должны создать два действия: Activity1(которое будет отображать main.xml макет) и Activity2(который будет отображать main1.xml макета), и пока пользователь находится в Activity2 и нажимает кнопку "Назад", Activity1 будет снова автоматически отображаться системой, и Activity2 будет уничтожена. Пример:

Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);

см. этот учебник о том, как переключаться между действиями с помощью демонстрационного примера приложения, которое вы можете загрузить в конце учебника.

NB: не забудьте объявить свои действия в файле манифеста.

Это может помочь вам..

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
    //do your stuff
}
return super.onKeyDown(keyCode, event);
}

Вы не меняете действия, поэтому при повторном нажатии 1-я страница не отображается,

вы должны использовать setcontentview в методе onbackpressed(),

тогда вы сможете показать 1-ю страницу, иначе она всегда перейдет к предыдущему действию, а это не то, что вы ищете.

Вы, вероятно, хотите два вида деятельности (см. Ниже). Когда вы нажимаете на кнопку 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);
    }

}
Другие вопросы по тегам