android-up指示灯无法正常工作

时间:2017-04-23 08:15:49

标签: android back-button android-2.3-gingerbread

我已经构建了这个以测试我的应用程序如何在低端设备上工作(拥有少量资源,旧版本的android等),这种情况下指标不能仅在我的2.3.5 api 10中工作。不工作意味着它不会让我回到父活动。然而,Toast是为了看看发生了什么,这次只有吐司在该设备上完美显示但仍未导航到父活动(主要活动)

Main2Activity:

public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);


        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case android.R.id.home:
                Toast.makeText(this, "Up Button is clicked!", Toast.LENGTH_SHORT).show();
                break;
        }

        return super.onOptionsItemSelected(item);
    }
}

父级已在Mainefest中设置:

....
    <activity
                android:name=".Main2Activity"
                android:parentActivityName=".MainActivity"></activity>
        </application>
....

同样,这完全没有任何问题,模拟器和我测试的其他设备,如Nexus 5(API 19),不仅仅是工作:

enter image description here

创建了Toast:

enter image description here

知道为什么上升指标没有让我回到主要活动?

1 个答案:

答案 0 :(得分:1)

onOptionsItemSelected()添加NavUtils.navigateUpFromSameTask(this);

同样返回true以消耗事件..

来自Documentaiton

  

void navigateUpFromSameTask (Activity sourceActivity):方便   方法,相当于调用navigateUpTo(sourceActivity,   getParentActivityIntent(sourceActivity))。 sourceActivity将是   完成了这个电话。

  @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        Toast.makeText(this, "Up Button is clicked!", Toast.LENGTH_SHORT).show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

另外,要支持API级别4 - 16,您还可以使用<meta-data>元素声明父活动,该元素指定"android.support.PARENT_ACTIVITY"的值。例如:

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>