Android ActionBar 返回上一个Activity

第一个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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值