我的应用使用android.support.v7.app.ActionBar
,因此我可以使用Android 2.3.4手机上的操作栏和使用Android 4.4.2的平板电脑。我已将我的最小和目标SDK设置为10和18.当我单击操作栏上的后退按钮调用setDisplayHomeAsUpEnabled(true)
时,它在2.3.4手机上正常工作并返回到名为{的主页活动{1}}。但是,当我单击平板电脑上操作栏上的后退按钮时,它会关闭应用程序,就像我单击平板电脑上的后退按钮一样。 LogCat中没有任何内容,所以当单击操作栏Main_Interface
按钮时,它应该会关闭应用程序。以下是Manifest中的Activity的样子:
setDisplayHomeAsUpEnabled()
这是除了ActionBar调用之外的所有活动:
<activity
android:name=".UILNPPager"
android:configChanges="orientation|screenSize"
android:label="UILNPPager"
android:parentActivityName="com.myapp.ktg.Main_Interface"
android:theme="@style/Theme.Blu_uilpager" >
<intent-filter>
<action android:name="com.myapp.ktg.UILNPPAGER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.myapp.ktg.Main_Interface" />
</activity>
我尝试从清单中接听电话 import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
public class UILNPPager extends ActionBarActivity {
private static final String STATE_POSITION = "STATE_POSITION";
DisplayImageOptions options;
ViewPager pager;
String[] imTitlesStr;
String[] imMediumStr;
String[] imPriceStr;
String[] imageUrls;
int pagerPosition;
PhotoViewAttacher mAttacher;
ActionBar mActionbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actionbar_uilpager);
//--- ViewPager stuff
....
//--- END ViewPager stuff
/** Getting a reference to action bar of this activity */
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main_actions, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
}
,但这没有效果。它仍然可以在2.3.4手机上正常工作,而不是在4.4.2平板电脑上。
知道为什么它在平板电脑上无法正常工作?
答案 0 :(得分:1)
请使用AppCompat主题或继承其中一个主题的主题。例如:
我注意到您使用自己的样式主题,您可以从AppCompat主题之一继承主题,如下所示。
<style name="Theme.Blu_uilpager"
parent="@style/ThemeAppCompat.Light">
....
</style>
引自官方Android教程https://developer.android.com/training/basics/actionbar/styling.html
注意:如果您使用支持库API作为操作栏,则必须使用(或覆盖)Theme.AppCompat样式系列(而不是API级别11及更高版本中提供的Theme.Holo系列) 。在这样做时,您声明的每个样式属性必须声明两次:一次使用平台的样式属性(android:properties)和一次使用支持库中包含的样式属性(appcompat.R.attr属性 - 上下文这些属性实际上是你的应用程序)。有关详细信息,请参阅以下示例。
答案 1 :(得分:0)
在我的应用中,我使用自己的过渡从活动A转移到活动B.我发现活动A中overridePendingTransition();
调用中的调用onPause();
打破了{{1调用活动B,其中包含getSupportActionBar().setDisplayHomeAsUpEnabled(true);
。因此,在活动A上,我删除了ActionBar
方法并在调用活动B的onPause()
中调用overridePendingTransition();
,如下所示:
Intent
然后在活动B中删除了 Intent miI = new Intent();
miI.setClass(Splash.this, Main_Interface.class);
startActivity(miI);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
方法并将onPause();
添加到overridePendingTransition(R.anim.fadein, R.anim.fadeout);
方法,如下所示:
onCreate();
然后我将 super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
setContentView(R.layout.mainpage);
调用放在所有其他活动的overridePendingTransition();
方法中,就像在Activity B中一样。这样做可以使转换正常工作。为了让onCreate();
在我的4.4.2平板电脑上正确返回Main_Interface活动,我只需拨打ActionBar
。一切正常!