我已将appcompat文件设置为projectproperties。错误日志中没有错误,也没有问题。 logcat在getActionBar中显示错误java.nullpointer.exception。当我评论该行时,应用程序运行良好。 关于如何解决这个问题需要的建议
ActionBar actionBar= getActionBar();
View cview= getLayoutInflater().inflate(R.layout.actionbar_menu, null);
actionBar.setCustomView(cview);
构建Gradle文件包含以下
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.bumpintomums"
minSdkVersion 15
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
错误Logcat
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bumpintomums/com.current.amnepal.bumpintomum.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.current.amnepal.bumpintomum.MainActivity.onCreate(MainActivity.java:83)
at android.app.Activity.performCreate(Activity.java:4470)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:2)
您可以检查活动中是否应用了“主题”
如果它是没有ActionBar的主题,如果你试图获得动作栏,你将获得null。
答案 1 :(得分:1)
如果使用activity.getActionBar()
,则只返回null,而不是异常。请提供您的代码和printStackTrace()
只有在调用null方法时才会出现nullpointer.exception,例如null.getActionBar()
PS:你使用getActionBar().hide();
因为getActionBar()为null,所以你的代码是null.hide()
,就会发生异常。如果你想使用/隐藏actionBar,请阅读上面的指南。
<强>的NullPointerException-workround:强>
if(getActionBar() != null)
getActionBar().hide();
在AndroidManifest.xml中使用主题
<activity android:theme="@style/Theme.AppCompat.Light" ... >
扩展了ActionBarActivity
public class FoorActivity extends ActionBarActivity
填写您的菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
答案 2 :(得分:0)
从我的问题中我可以得到的是,您正在为您的应用程序设计自定义操作栏,对吗?
如果是,那么下面的代码可以帮助你:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar bar = getActionBar();
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayShowCustomEnabled(true);
bar.setCustomView(R.layout.row);
bar.show();
}
}
请注意,在操作栏上启用customenabled属性对于Actionbar实现自定义视图非常重要。
bar.setDisplayShowCustomEnabled(true)
也无需使用LayoutInflator,您可以使用
直接提供操作栏自定义布局actionbar.setCustomView(您的布局文件)
答案 3 :(得分:0)
我在Android清单文件中将主题设置为NoActionBar。此外,我的gradle构建版本和com.android.support:appcompat-v7:27.+'不同步。 看看你是否有这个问题。