Android操作栏主页button

我已经设置了我的动作栏,但没有任何反应,当我点击自上而下的button。 下面的两个选项是启用的,所以不应该自动进入家庭活动?

ab.setHomeButtonEnabled(true); ab.setDisplayHomeAsUpEnabled(true); 

行动酒吧

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); final String[] activities; Resources res = getResources(); activities = res.getStringArray(R.array.activities); ActionBar ab = getActionBar(); ab.setHomeButtonEnabled(true); ab.setDisplayHomeAsUpEnabled(true); ab.setTitle(R.string.app_name); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); ab.show(); /** Create an array adapter to populate dropdownlist */ ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, activities); /** Setting dropdown items and item navigation listener for the actionbar */ getActionBar().setListNavigationCallbacks(adapter, navigationListener); /** Enabling dropdown list navigation for the action bar */ getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); return true; } 

Solutions Collecting From Web of "Android操作栏主页button"

正如其他人所说,行为不会自动发生 – 你需要告诉它去哪里。

但是,我需要添加另一个答案,因为目前的答案都是违反Androiddevise准则 – 回!=家。 请参阅文档

你真正想做的事情是这样的:

 @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()) { case android.R.id.home: Intent homeIntent = new Intent(this, HomeActivity.class); homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(homeIntent); } return (super.onOptionsItemSelected(menuItem)); } 

这将带你到父母的活动,而不是只是通过后面的堆栈。 我还添加了Intent.Flag来清除后退堆栈,这是一个很有用的方法,当你的用户使用“Up”button的时候,可以阻止后退堆栈的进入

您还需要确保您的应用程序知道按下时要做什么:

 @Override public boolean onOptionsItemSelected(MenuItem menuItem) { switch (menuItem.getItemId()) { case android.R.id.home: // ProjectsActivity is my 'home' activity super. onBackPressed(); return true; } return (super.onOptionsItemSelected(menuItem)); } 

我们必须按照官方文档中的规定,在AndroidManifast.xml文件中将元数据定义到我们的子活动中:

 <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" > <!-- The meta-data element is needed for versions lower than 4.1 --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity> 

如果版本是4.1或更高版本,则无需定义元数据,您必须像在代码中那样启用操作栏主页button。 没有必要使用后退button代码,并与我的Android应用程序工作正常: 助手+

你需要定义这里发生的事情:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); } return true; } 

在你的代码中添加这些行:

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: System.out.println("Pressed Back Button"); break; default: return super.onOptionsItemSelected(item); } return false; }