在stackoverflow中多次询问此问题,我已经尝试了所有这些问题。但不幸的是,两者都不适合我。
我正在尝试在两个活动之间实现导航,这是学习Android应用开发的一部分。我的minium SDK和目标SDK版本分别是11和21(Android 5)。我在AndroidManifest.xml中的设置如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.navigation"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DetailActivity" >
</activity>
</application>
</manifest>
我有两个活动:MainActivity和DetailActivity。当我单击MainActivity中的按钮时,该应用程序成功打开了DetailActivity。但是当我尝试使用以下代码启用后退按钮时,它返回一个NullPointerExcepion:
getActionBar().setDisplayHomeAsUpEnabled(true);
我的两个类都扩展了ActionBarActivity。
在MainActivity.java中:
public class MainActivity extends ActionBarActivity {
...
}
在DetailActivity.java中:
public class DetailActivity extends ActionBarActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
getActionBar().setDisplayHomeAsUpEnabled(true); // returns null pointer
}
我也试过改变主题。例如,android:theme="@android:style/Theme.Holo.Light"
。
答案 0 :(得分:24)
您继承自ActionBarActivity
。因此,您需要使用getSupportActionBar()
而不是getActionBar()
来获取appcompat-v7
提供的操作栏后台。
答案 1 :(得分:4)
导入v7:
import android.support.v7.app.ActionBar;
然后在onCreate
方法中:
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
答案 2 :(得分:3)
使用此..
getSupportActionBar()setDisplayHomeAsUpEnabled(真);
而不是这个 - getActionBar()。setDisplayHomeAsUpEnabled(true);
它会完美运作。
答案 3 :(得分:0)
Summay: 确保您不会获得NullPointerException。 你需要:
但在我的情况下,需要if语句来解决我的应用程序崩溃问题。顺便说一句,我使用AppCompatActivity来保存我的视图片段。
public onCreateView(LayoutInflater inflater, final ViewGroup container,Bundle savedInstanceState){
View view = inflater.inflate(R.layout.list_fragment, container, false);
ActionBar actionBar = getActivity().getActionBar();
if (actionBar != null){
actionBar.setDisplayHomeAsUpEnabled(true);
}