Аппаратная кнопка возврата не возвращает меня на предыдущую страницу
У меня есть 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);
}
}