2016-05-19 47 views
0

因此,在我的應用程序中,當我按下向上按鈕時,活動退出而不是去其父母Activity。這裏可能有什麼問題?Android上按鈕退出應用程序,而不是去父母

SettingsActivity.java:

public class SettingsActivity extends AppCompatPreferenceActivity { 

private Toolbar mToolbar; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ViewGroup root = (ViewGroup) findViewById(android.R.id.content); 
    LinearLayout content = (LinearLayout) root.getChildAt(0); 
    LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.activity_settings, null); 

    root.removeAllViews(); 
    toolbarContainer.addView(content); 
    root.addView(toolbarContainer); 

    mToolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar); 
    setSupportActionBar(mToolbar); 
    ActionBar actionBar = getSupportActionBar(); 
    if (actionBar != null) { 
     // Show the Up button in the action bar. 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
    addPreferencesFromResource(R.xml.pref_general); 

} 


@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 
     onBackPressed(); 
     return true; 
    } 
    return super.onMenuItemSelected(featureId, item); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    NavUtils.navigateUpFromSameTask(this); 

} 
} 

如何這一活動被稱爲:

private void openSettingsActivity() { 
    Intent intent = new Intent(getApplicationContext(), SettingsActivity.class); 
    startActivity(intent); 
} 

而且AndroidManifest.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="pt.bluecover.wearable3d" 
android:versionCode="1" 
android:versionName="1.0"> 

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="23" /> 

<android:uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/female_icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".DrawerActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".SettingsActivity" 
     android:label="@string/title_activity_settings" 
     android:parentActivityName=".DrawerActivity" 
     android:screenOrientation="portrait"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="pt.bluecover.wearable3d.DrawerActivity" /> 
    </activity> 
</application> 
</manifest> 

所以,可能是什麼不對的行爲?

回答

0

SettingsActivity

@Override 
public boolean onOptionsItemSelected(MenuItem menuItem) { 
    if (menuItem.getItemId() == android.R.id.home) { 
     onBackPressed(); 
    } 
    return super.onOptionsItemSelected(menuItem); 
} 

不要忘了覆蓋onBackPressed,並呼籲super.onBackPressed();

@Override 
public void onBackPressed() { 
super.onBackPressed(); 
} 
+0

感謝您的回答,工作就像一個加入這個寶石! –

0

試試這個代碼

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
int id = item.getItemId(); 
if (id == android.R.id.home) { 
    onBackPressed(); 
    return true; 
} 
return super.onMenuItemSelected(featureId, item); 
} 


@Override 
public void onBackPressed() { 
super.onBackPressed(); 
//NavUtils.navigateUpFromSameTask(this); 
finish(); 
} 
相關問題