最多的Android按键不工作(Android up button isn't workin

2019-09-28 21:09发布

我有一个简单的应用程序。 它由活性A和B.活动的

当我开始在(从启动器图标)活性A,然后导航到活动B,然后打向上按钮。 我到达活动A.完善。

然而,当我在命令行启动活动B(模拟另一个应用程序或启动这一活动的通知)和我打向上按钮,我只是得到带到主屏幕。

这里是我的设置:

活动A

public class ActivityA extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(ActivityA.this, ActivityB.class);
                startActivity(intent);
            }
        });

    }


}

活动B

public class ActivityB extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_b);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

我的清单。 需要注意的是父活动的定义和我的应用程序分钟的API为16(这样父活动声明的有效期为16及以上)。

   <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".ActivityA"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ActivityB"
            android:exported="true"
            android:label="@string/title_activity_b"
            android:parentActivityName=".ActivityA"
            android:theme="@style/AppTheme.NoActionBar" />
    </application>

若要从CMD行启动ActivityB我用: adb shell am start com.example.demo/com.example.demo.ActivityB

编辑1

据此间文档: https://developer.android.com/training/appbar/up-action.html

你并不需要赶在活动的onOptionsItemSelected()方法的后续行动。 取而代之的是,该方法应该调用它的父类,如图应对措施。 超类方法导航到父活动,如应用程序清单中指定响应向上选择。

编辑2:

只是踢,我想这两个代码片段在这里。 一次一个,看看他们会做的伎俩。 但他们没有。 ActivityA不开。 ActivityB只是关闭。

https://developer.android.com/training/implementing-navigation/ancestral.html

@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);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            // This activity is NOT part of this app's task, so create a new task
            // when navigating up, with a synthesized back stack.
            TaskStackBuilder.create(this)
                    // Add all of this activity's parents to the back stack
                    .addNextIntentWithParentStack(upIntent)
                    // Navigate up to the closest parent
                    .startActivities();
        } else {
            // This activity is part of this app's task, so simply
            // navigate up to the logical parent activity.
            NavUtils.navigateUpTo(this, upIntent);
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
}

这是怎么回事VS预期? 当我通过CMD线打开ActivityB和撞了上去,我希望去ActivityA而ActivityB关闭。 而实际上,这只是ActivityB关闭。

Answer 1:

这是默认的bahavior,向上导航按钮与工作Activity Stack ,如果ActivityA是不是在栈中, Android将返回到前一个画面,在这种情况下,家庭。



文章来源: Android up button isn't working