AndroidManifest.xml 备份按钮不起作用

AndroidManifest.xml Back Up Button not working

如果我单击 Activity-3 后退按钮,它将转到 Activity-1 而不是 Activity-2。我不确定清单中有什么问题 file.Error 如果我单击后退按钮。 以下是 Activity 第 2 页的错误代码。如果我单击该项目,回收站视图工作正常。现在只有落后才是问题
发现问题。从 Activity3 到 Activity2 的变量是空的,所以这就是为什么它会变成 Activity1。

Activity:3
        TestMenuDetail:
        val navBarTitle2=intent.getStringExtra(TestMenuViewHolder.TEST_TITLE_NAME)
        val TestVar=Intent(this@TestMenuDetail,TestMenuList::class.java)
        intent.putExtra("TestVar",navBarTitle2)

Activity:2      
TestMenuList:
        val navBarTitle3=intent.getStringExtra("TestVar")
        println("Helllo Test: $navBarTitle3")







Process: TestProject, PID: 28725
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was NUMBER at line 1 column 2 path $
        at com.google.gson.Gson.fromJson(Gson.java:939)
        at com.google.gson.Gson.fromJson(Gson.java:892)
        at com.google.gson.Gson.fromJson(Gson.java:841)
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at TestProject.TestMenuList$fetchJSON.onResponse(TestMenuList.kt:50)
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153)
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was NUMBER at line 1 column 2 path $
        at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:350)
        at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:70)
        at com.google.gson.Gson.fromJson(Gson.java:927)
        at com.google.gson.Gson.fromJson(Gson.java:892) 
        at com.google.gson.Gson.fromJson(Gson.java:841) 
        at com.google.gson.Gson.fromJson(Gson.java:813) 
        at TestProject.TestMenuList$fetchJSON.onResponse(TestMenuList.kt:50) 
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:153) 
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 


 Android Manifest.XML
Activity:1       
       <activity
            android:name="TestProject.ItemDetailActivity3"
            android:label="Item Price"
            android:screenOrientation="portrait">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="TestProject.WelcomeActivity" />
        </activity>
Activity:2
        <activity
            android:name="TestProject.TestMenuList"
            android:label="Test Menu"
            android:screenOrientation="portrait">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="TestProject.ItemDetailActivity3" />
        </activity>
Activity:3
        <activity android:name="TestProject.TestMenuDetail"
            android:label="Test List Detail"
            android:screenOrientation="portrait" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="TestProject.TestMenuList" />
        </activity>

使用android:parentActivityName:

<activity android:name="TestProject.TestMenuDetail"
            android:label="Test List Detail"
            android:screenOrientation="portrait" 
            android:parentActivityName="TestProject.TestMenuList"> // your activity which you want to get back to

            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="TestProject.TestMenuList" />
      </activity>

您无需 parent activity 即可向上导航/返回。但是如果你想这样做,你需要指定 android:parentActivityName 属性,否则它将无法与 4.0 以上的 Android 版本一起使用。来自 Google Docs:

<application ... >
    ...
    <!-- The main/home activity (it 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 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

向上导航的其他方法是使用后退按钮实现。考虑到您会将活动堆叠在另一个之上,

OnCreate 方法中添加:

if (getSupportActionBar() != null) 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

然后覆盖 OnOptionsItemSelected 执行一个操作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}