AndroidManifest.xml Кнопка резервного копирования не работает - PullRequest
0 голосов
/ 18 октября 2018

Если я нажму кнопку «Задание 3», то перейдет к «Действие 1» вместо «Действие 2».Я не уверен, что не так в файле манифеста. Ошибка Если я нажимаю кнопку «Назад».Ниже приведен код ошибки со страницы действий 2. Представление Recycler работает нормально, если я щелкаю элемент.Проблема только в обратном направлении.
Найдена проблема.Переменная от 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$1.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$1.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>

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вам не нужно иметь родительскую активность для навигации вверх / назад.Но если вы хотите, вам нужно указать атрибут android:parentActivityName, иначе он не будет работать с версиями Android выше 4.0.От 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>

Другой способ перехода вверх - использование реализации кнопки «Назад».Учитывая, что вы сложите действия поверх других, метод

Inside 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);
}
0 голосов
/ 18 октября 2018

Использование 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...