Android 标题栏上的后退按钮不适用于棒棒糖制作前的设备
我在标题栏上添加了一个后退按钮,用于我的应用程序中的一些活动。后退按钮对于棒棒糖设备很有效,但当我在冰淇淋三明治设备上测试我的应用程序时,后退按钮不起作用。以下是我的代码:Android 标题栏上的后退按钮不适用于棒棒糖制作前的设备,android,Android,我在标题栏上添加了一个后退按钮,用于我的应用程序中的一些活动。后退按钮对于棒棒糖设备很有效,但当我在冰淇淋三明治设备上测试我的应用程序时,后退按钮不起作用。以下是我的代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_article); getSupportActionBar
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_article);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //Adding back button
List<ItemObjectArticle> rowListItem = getAllArticleItemList();
lLayout = new LinearLayoutManager(ArticleActivity.this);
RecyclerView rView = (RecyclerView)findViewById(R.id.recycler_view1);
rView.setLayoutManager(lLayout);
ArticleAdapter rcAdapter = new ArticleAdapter(ArticleActivity.this, rowListItem);
rView.setAdapter(rcAdapter);
}
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}else if(id==R.id.home){
NavUtils.navigateUpFromSameTask(this); //handling click
return true;
}
return super.onOptionsItemSelected(item);
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_-article);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//添加后退按钮
List rowListItem=getAllArticleItemList();
lLayout=新的LinearLayoutManager(ArticleActivity.this);
RecyclerView rView=(RecyclerView)findViewById(R.id.recycler\u视图1);
rView.setLayoutManager(lLayout);
ArticleAdapter rAdapter=新的ArticleAdapter(ArticleActivity.this,rowListItem);
rView.setAdapter(rcAdapter);
}
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}else if(id==R.id.home){
NavUtils.navigateUpFromSameTask(this);//单击
返回true;
}
返回super.onOptionsItemSelected(项目);
}
在Android清单文件中,我添加了:
<activity
android:name=".ArticleView"
android:label="@string/title_activity_article_view"
android:parentActivityName="com.example.android.kheti.ArticleActivity"> //this
<intent-filter>
<action android:name="com.example.android.kheti.ARTICLEVIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
//这个
我需要更改哪些代码才能在所有Android设备上运行?来自文档
从Android 4.1(API级别16)开始,您可以声明逻辑
通过指定android:parentActivityName来设置每个活动的父级
元素中的属性
如果您的应用程序支持Android 4.0及更低版本,请包括支持
使用应用程序库,并在
. 然后将父活动指定为的值
android.support.PARENT_活动,与
android:parentActivityName属性
因此,您需要添加元数据,以使其在所有设备中工作。
添加支持库并尝试以下操作:
<activity
android:name=".ArticleView"
android:label="@string/title_activity_article_view"
android:parentActivityName="com.example.android.kheti.ArticleActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.android.kheti.ArticleActivity" />
</activity>
只是一个猜测:在方法onOptionsItemSelected()
中,尝试使用android.R.id.home
@qbix,谢谢,但它通过在AndroidManifest.xml
文件中添加元数据元素在这两种情况下都有效。在我的例子中,使用android.R.id.home
和R.id.home
是等效的。