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>
<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);
}
如果我单击 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>
<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);
}