第一个Activity是:MainActivity,里有有几个TextView作为按键去用,activity_main.xml:
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:textSize="32dp"
android:id="@+id/backActivity_test"
android:text="BackActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:textSize="32dp"
android:id="@+id/backActionBarActivity_test"
android:text="BackActionBarActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:textSize="32dp"
android:id="@+id/webViewActivity_test"
android:text="WebViewActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
MainActivity的onCreate里注册点击事件:
findViewById(R.id.backActionBarActivity_test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, BackActionBarActivity.class);
startActivity(intent);
}
});
findViewById(R.id.webViewActivity_test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, WebViewActivity.class);
startActivity(intent);
}
});
findViewById(R.id.backActivity_test).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, BackActivity.class);
startActivity(intent);
}
});
这里的BackActionBarActivity只是一个默认的添加的Blank Activity,只要在其onCreate中添加:
getSupportActionBar(). setDisplayHomeAsUpEnabled(true);
ActionBar最左边就出来一个返回按钮
还要在AndroidManifest.xml里设置这个Activity的parentActivity
<activity
android:parentActivityName=".MainActivity"
android:name=".BackActionBarActivity"
android:launchMode="singleTask"
android:label="@string/title_activity_back_action_bar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
这里的 meta-data不知道什么时候有用,下面是官方文档:
<application ... >
...
<!-- The main/home activity (has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support API level 7+ -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
明明是说兼容 API 7+的,测试的时候删除了还是可以的
运行这个程序,点击一下MainActivity里的id为R.id.backActionBarActivity_test的TextView,进入BackActionBarActivity,再点击ActionBar里的返回按钮成功返回。
有时候为了方便测试,经常直接在MainActivity里的 onCreate
中直接 startActivity(new Intent(.....))
进入想要测试的Activity,于是我在这个例子的MainActivity onCreate
里直接打开BackActionBarActivity,结果我在BackActionBarActiivty里一直接点击ActionBar左边的返回按钮,都不能返回,感觉是结束了当前的BackActionBarActivity,然后又打开新的一个BackActionBarActivity,最后只能通过物理返回键退出这个BackActionBarActivity。