针对NullPointerException与android.support.v7.widget.Toolbar这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ActionBarDrawerT
针对NullPointerException与android.support.v7.widget.Toolbar这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar、Android ActionBar NullPointerException、Android ContentResolver.insert() 抛出 NullPointerException、Android NullPointerException GetDatabaseLocked等相关知识,希望可以帮助到你。
本文目录一览:- NullPointerException与android.support.v7.widget.Toolbar
- ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar
- Android ActionBar NullPointerException
- Android ContentResolver.insert() 抛出 NullPointerException
- Android NullPointerException GetDatabaseLocked
NullPointerException与android.support.v7.widget.Toolbar
我目前正在尝试在我的应用中实现导航抽屉。我在工具栏为null时遇到问题。我已经在网上进行了许多搜索,并尝试了许多不同的解决方案,但均无济于事。我尚未完成所有代码的编写,但是无法启动我的应用程序来检查导航抽屉。谁能看到我错了?
如果还有其他需要发布的信息,请告诉我。
我在所有活动屏幕上都包括了
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
app_bar.xml
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark" ></android.support.v7.widget.Toolbar>
MainActivity的第72行
setSupportActionBar(mToolbar);
主要活动
public class Trans_List extends ActionBarActivity { private Toolbar mToolbar; private CharSequence mTitle; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_trans_list); mToolbar = (Toolbar) findViewById(R.id.app_bar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.left_drawer); drawerFragment.setUp((DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
Style.xml
<?xml version="1.0" encoding="utf-8"?><resources> <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar" > <item name="windowActionBar">false</item> </style> <style name="Theme.split" parent="AppBaseTheme"> </style> <style name="dialog_custom" parent="@style/Theme.AppCompat.Dialog"> <item name="@android:listPreferredItemPaddingLeft">20dip</item> <item name="@android:listPreferredItemPaddingRight">20dip</item> <item name="@android:listPreferredItemPaddingStart">20dip</item> <item name="@android:listPreferredItemPaddingEnd">20dip</item> </style></resources>
LogCat
01-07 01:14:29.702 4811-4811/com.lee.yuchan.splt E/AndroidRuntime﹕FATAL EXCEPTION: main Process: com.lee.yuchan.splt, PID: 4811 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lee.yuchan.splt/com.lee.yuchan.splt.Trans_List}:java.lang.NullPointerException: Attempt to invoke virtual method''java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()''on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ''java.lang.CharSequenceandroid.support.v7.widget.Toolbar.getTitle()'' on a null objectreference at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:95) at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:88) at android.support.v7.internal.app.ToolbarActionBar.<init>(ToolbarActionBar.java:84) at android.support.v7.app.ActionBarActivityDelegateBase.setSupportActionBar(ActionBarActivityDelegateBase.java:175) at android.support.v7.app.ActionBarActivity.setSupportActionBar(ActionBarActivity.java:92) at com.lee.yuchan.splt.Trans_List.onCreate(Trans_List.java:72) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
主要活动XML
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/app_bar"/> <TextView android:id="@+id/selectItems" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/select_instr1" android:textSize="20sp" android:gravity="center" android:paddingTop="4sp" android:paddingBottom="10sp" > </TextView> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > </ListView> <Button android:id="@+id/buttonChecked" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="0dip" android:background="@drawable/custom_button" android:textColor="#ffffff" android:text="@string/next_button" /> </LinearLayout> <!-- The navigation drawer --> <fragment android:id="@+id/left_drawer" android:layout_width="@dimen/nav_dr" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragment_navigation_drawer" android:name="com.lee.yuchan.splt.NavigationDrawerFragment" tools:layout="@layout/fragment_navigation_drawer" /> </android.support.v4.widget.DrawerLayout>
答案1
小编典典我用工具栏解决了这个问题。经过数小时的搜索和尝试不同的操作,我意识到我的代码没错,它使用的是layout-21中的布局,而不是自从模拟Android
5.0以来的layout文件夹。我所做的所有修改都在layout文件夹中。我对layout-21文件夹中的xml文件进行了更改,问题得以解决。很抱歉浪费了时间和时间。
ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar
错误说ActionBarDrawerToggle中的ActionBarDrawerToggle()无法应用于android.support.v7.widget.Toolbar然后在实际参数R.id.drawable_ic_drawer(int)下
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import android.support.v7.widget.Toolbar;
mDrawerToggle = new android.support.v7.app.ActionBarDrawerToggle( getActivity(),/* host Activity */ mDrawerLayout,/* DrawerLayout object */ R.drawable.ic_drawer,/* nav drawer image to replace 'Up' caret */ R.string.navigation_drawer_open,/* "open drawer" description for accessibility */ R.string.navigation_drawer_close /* "close drawer" description for accessibility */ ) {
据说造成错误的部分是R.drawer.ic_drawer.我该如何解决?
解决方法
android.support.v7.app.ActionBarDrawerToggle.ActionBarDrawerToggle(Activity activity,DrawerLayout drawerLayout,Toolbar toolbar,int openDrawerContentDescRes,int closeDrawerContentDescRes)
您正在传递R.drawable.ic_drawer drawable而不是工具栏,这就是您收到此错误的原因.
创建工具栏并将其添加为操作栏,并将此工具栏传递给此构造函数.
Android ActionBar NullPointerException
这是我的MainActivity:
public void onCreate(Bundle savedInstanceState) { this.requestwindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.login); ActionBar actionBar = getActionBar(); actionBar.show(); //more code............
这是logcat:
03-04 16:31:09.423: E/AndroidRuntime(1441): FATAL EXCEPTION: main 03-04 16:31:09.423: E/AndroidRuntime(1441): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.salebook/com.example.salebook.MainActivity}: java.lang.NullPointerException 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2180) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.ActivityThread.access$600(ActivityThread.java:141) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.os.Handler.dispatchMessage(Handler.java:99) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.os.Looper.loop(Looper.java:137) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.ActivityThread.main(ActivityThread.java:5041) 03-04 16:31:09.423: E/AndroidRuntime(1441): at java.lang.reflect.Method.invokeNative(Native Method) 03-04 16:31:09.423: E/AndroidRuntime(1441): at java.lang.reflect.Method.invoke(Method.java:511) 03-04 16:31:09.423: E/AndroidRuntime(1441): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 03-04 16:31:09.423: E/AndroidRuntime(1441): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 03-04 16:31:09.423: E/AndroidRuntime(1441): at dalvik.system.NativeStart.main(Native Method) 03-04 16:31:09.423: E/AndroidRuntime(1441): Caused by: java.lang.NullPointerException 03-04 16:31:09.423: E/AndroidRuntime(1441): at com.example.salebook.MainActivity.onCreate(MainActivity.java:130) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.Activity.performCreate(Activity.java:5104) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 03-04 16:31:09.423: E/AndroidRuntime(1441): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2144) 03-04 16:31:09.423: E/AndroidRuntime(1441): ... 11 more
第130行是anctionBar.show(),我在res / menu / menu.xml中:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/itemid_0" android:title="Action Item 0" android:icon="@drawable/ic_launcher" android:orderInCategory="0" android:showAsAction="ifRoom|withText" /> <item android:id="@+id/itemid_1" android:title="Action Item 1" android:orderInCategory="0" /> <item android:id="@+id/itemid_2" android:title="Action Item 2" android:orderInCategory="0" /> <item android:id="@+id/itemid_3" android:title="Action Item 3" android:orderInCategory="0" /> </menu>
我没有发现问题.希望有人帮助我.
谢谢.
另外,在appThem风格:
<style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowActionBar">true</item> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style>
解决方法
确保您具有显示操作栏的窗口功能,这是操作栏显示所必需的.有关详细信息,请查看以下链接.
…检查此问题getActionBar returns null并查看此链接以获取有关您的问题http://blog.perpetumdesign.com/2011/08/strange-case-of-dr-action-and-mr-bar.html的更多信息
Android ContentResolver.insert() 抛出 NullPointerException
如何解决Android ContentResolver.insert() 抛出 NullPointerException?
我正在尝试将一些音频文件(m4a、mp3...)添加到 MediaStore 的音频收藏中,以便其他音乐应用程序可以列出它们。为了简单起见,我只是复制了文档中的内容。 ( https://developer.android.com/training/data-storage/shared/media )
所以在活动的 onCreate() 方法中我写了这个:
val resolver = applicationContext.contentResolver
val audioCollection =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
MediaStore.Audio.Media.getContentUri(
MediaStore.VOLUME_EXTERNAL_PRIMARY
)
} else {
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
}
val songDetails = ContentValues().apply {
put(MediaStore.Audio.Media.disPLAY_NAME,"Test Track")
}
resolver.insert(audioCollection,songDetails)
但是每次我启动它时,我都会得到以下信息:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method ''int java.lang.String.lastIndexOf(int)'' on a null object reference
at android.os.Parcel.createException(Parcel.java:1972)
at android.os.Parcel.readException(Parcel.java:1934)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
at android.content.ContentResolver.insert(ContentResolver.java:1593)
清单声明了 READ、WRITE 以及 MANAGE_EXTERNAL_STORAGE 权限,并在我设备上的 Android 应用设置中启用了这些存储权限。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Android NullPointerException GetDatabaseLocked
我的程序有问题.
我使用数据库来保存我的应用程序的设置.当我在应用程序中保存密码时一切正常,但是当我保存“学校类”的名称时原则上使用相同的方法,但另一个表崩溃并且我收到此错误:
02-19 15:32:04.070: E/AndroidRuntime(14349): FATAL EXCEPTION: main
02-19 15:32:04.070: E/AndroidRuntime(14349): java.lang.NullPointerException
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.database.sqlite.sqliteOpenHelper.getDatabaseLocked(sqliteOpenHelper.java:224)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.database.sqlite.sqliteOpenHelper.getWritableDatabase(sqliteOpenHelper.java:164)
02-19 15:32:04.070: E/AndroidRuntime(14349): at de.vertretungsplan2.helper.DBHandler.insertKurs(DBHandler.java:95)
02-19 15:32:04.070: E/AndroidRuntime(14349): at de.vertretungsplan2.tabswipe.adapter.KurseFragment$1.onItemClick(KurseFragment.java:38)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AdapterView.performItemClick(AdapterView.java:297)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.widget.AbsListView$1.run(AbsListView.java:3463)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.os.Handler.handleCallback(Handler.java:730)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.os.Handler.dispatchMessage(Handler.java:92)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.os.Looper.loop(Looper.java:137)
02-19 15:32:04.070: E/AndroidRuntime(14349): at android.app.ActivityThread.main(ActivityThread.java:5289)
02-19 15:32:04.070: E/AndroidRuntime(14349): at java.lang.reflect.Method.invokeNative(Native Method)
02-19 15:32:04.070: E/AndroidRuntime(14349): at java.lang.reflect.Method.invoke(Method.java:525)
02-19 15:32:04.070: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
02-19 15:32:04.070: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
02-19 15:32:04.070: E/AndroidRuntime(14349): at dalvik.system.NativeStart.main(Native Method)
这是应该在数据库中写入的方法:
public void insertKurs(String Kurs){
long rowId = -1;
try{
//open Database
sqliteDatabase db = this.getWritableDatabase();
//Content
ContentValues values = new ContentValues();
values.put(KURS_NAME, Kurs);
//insert Values in Table
rowId = db.insert(TABLE_NAME_KURS, null, values);
db.close();
}catch (sqliteException e){
Log.e(TAG,"insert()",e);
}finally{
Log.d(TAG, "insert(): rowId=" + rowId);
}
}
此方法没有任何问题:
public void insertPW(String PW){
sqliteDatabase db = null;
long rowId = -1;
try{
//open Database
db = this.getWritableDatabase();
//Content
ContentValues values = new ContentValues();
values.put(PASSWORD_NAME, PW);
//insert Values in Table
rowId = db.insert(TABLE_NAME_PW, null, values);
db.close();
}catch (sqliteException e){
Log.e(TAG,"insert()",e);
}finally{
Log.d(TAG, "insert(): rowId=" + rowId);
}
}
这是调用另一个的方法:
public void onItemClick(AdapterView<?>arg0,View v, int position,long id){
db.insertKurs(kursView1.getItemAtPosition(position).toString());
}
});
谢谢你的帮助,对不起我的英语:D
解决方法:
传递给sqliteOpenHelper构造函数的Context是null.
关于NullPointerException与android.support.v7.widget.Toolbar的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar、Android ActionBar NullPointerException、Android ContentResolver.insert() 抛出 NullPointerException、Android NullPointerException GetDatabaseLocked等相关知识的信息别忘了在本站进行查找喔。
本文标签: