2013-03-20 12 views
6

Jest to oczywisty kod związane z tematem:Powrót do aktywności macierzystej z błędem działalności rodzic w oczywisty

<activity 
     android:name="smartHomes.capstone.GeneralAndSecurity" 
     android:label="@string/title_activity_general_and_security" 
     android:parentActivityName="smartHomes.capstone.HomePage" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="smartHomes.capstone.HomePage" /> 
    </activity> 

To jest dziennik błędów:

03-20 21:19:18.227: E/AndroidRuntime(787): FATAL EXCEPTION: main 
    03-20 21:19:18.227: E/AndroidRuntime(787): java.lang.IllegalArgumentException: Activity   GeneralAndSecurity does not have a parent activity name specified. (Did you forget to add the android.support.PARENT_ACTIVITY <meta-data> element in your manifest?) 
    03-20 21:19:18.227: E/AndroidRuntime(787): at android.support.v4.app.NavUtils.navigateUpFromSameTask(NavUtils.java:177) 
    03-20 21:19:18.227: E/AndroidRuntime(787): at smartHomes.capstone.GeneralAndSecurity.onOptionsItemSelected(GeneralAndSecurity.java:41) 
    03-20 21:19:18.227: E/AndroidRuntime(787): at com.actionbarsherlock.app.SherlockActivity.onMenuItemSelected(SherlockActivity.java:208) 

proszę mogę wiedzieć dlaczego czy przycisk powrotu do góry zwraca mi błąd?

+0

Możesz opublikować kod w linii 41 twojej klasy "GeneralAndSecurity"? Dziennik mówi, że się tam zawiesza. Sprawdź również odpowiedzi na to pytanie [this post's] (http://stackoverflow.com/questions/12276027/how-can-i-return-to-a-parent-activity-corlyly) i sprawdź, czy pomagają. – Mxyk

Odpowiedz

2

Ten sam pracował dla mnie bez meta-data

Oto mój przykład.

<activity android:name="com.redplanet.sandboxandroid.ui.MainActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.redplanet.sandboxandroid.ui.SecondActivity" 
     android:parentActivityName="com.redplanet.sandboxandroid.ui.MainActivity" > 
    </activity> 

Moja klasa SecondActivity.

public class SecondActivity extends SherlockFragmentActivity { 

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

     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      break; 
     } 
     return super.onOptionsItemSelected(item); 

    } 

} 
+3

To może działać dla ciebie jako android: parentActivityName został wprowadzony w api 16. Aby obsługiwać poziomy API od 4 do 16, musisz zadeklarować działanie nadrzędne z i "android.support.PARENT_ACTIVITY" jak powyżej. – speedynomads

2

Miałem ten sam problem, ale był to po prostu literówka w nazwie pakietu. Czy dwukrotnie sprawdziłeś nazwę pakietu i klasy?

0

Try w swoim manifeście dodać to na swojej działalności dominującej:

android:allowBackup="true"

Przykład:

<activity 
    android:name=".View.MainActivity" 
    android:allowBackup="true"> 
</activity> 

<activity 
    android:name=".View.ChildActivity" 
    android:parentActivityName=".View.ChildActivity"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".View.MainActivity" /> 
</activity> 

I w ChildActivity:

public class ChildActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_child); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       NavUtils.navigateUpFromSameTask(this); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
Powiązane problemy