GVKun编程网logo

android – 实现包含List的Parcelable接口的Object抛出NullPointerException(list包含list)

11

此处将为大家介绍关于android–实现包含List的Parcelable接口的Object抛出NullPointerException的详细内容,并且为您解答有关list包含list的相关问题,此外

此处将为大家介绍关于android – 实现包含List的Parcelable接口的Object抛出NullPointerException的详细内容,并且为您解答有关list包含list的相关问题,此外,我们还将为您介绍关于Android ActionBar NullPointerException、Android ContentResolver.insert() 抛出 NullPointerException、Android gradle插件更新到3.3.0抛出NullPointerException、Android Library项目说nullpointerexception的有用信息。

本文目录一览:

android – 实现包含List的Parcelable接口的Object抛出NullPointerException(list包含list)

android – 实现包含List的Parcelable接口的Object抛出NullPointerException(list包含list)

我正在尝试使用Parcelable接口创建一个包含可对象列表的对象.我无法读回Parcel对象.

谁能指出我正确的方向?我在这里错过了什么?

MyParcelable对象:

public class MyParcelable implements Parcelable {

    private int myInt = 0;
    private List<MyListClass> arrList;

    public List<MyListClass> getArrList() {
        return arrList;
    }

    public void setArrList(List<MyListClass> arrList) {
        this.arrList = arrList;
    }

    public int getMyInt() {
        return myInt;
    }

    public void setMyInt(int myInt) {
        this.myInt = myInt;
    }

    MyParcelable() {
        // initialization
        arrList = new ArrayList<MyListClass>();
    }

    public MyParcelable(Parcel in) {
        myInt = in.readInt();
        in.readTypedList(arrList, MyListClass.CREATOR);
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writetoParcel(Parcel outParcel, int flags) {
        outParcel.writeInt(myInt);
        outParcel.writeTypedList(arrList);
    }

    public static final Parcelable.Creator<MyParcelable> CREATOR =
            new Parcelable.Creator<MyParcelable>() {

        @Override
        public MyParcelable createFromParcel(Parcel in) {
            return new MyParcelable(in);
        }

        @Override
        public MyParcelable[] newArray(int size) {
            return new MyParcelable[size];
        }
    };
}

MyListClass对象:

  public class MyListClass implements Parcelable{

    private int test;

    public MyListClass()
    {}

    public MyListClass(Parcel read){
        test = read.readInt();
    }

    public int gettest() {
        return test;
    }

    public void setTest(int test) {
        this.test = test;
    }

    public static final Parcelable.Creator<MyListClass> CREATOR = 
        new Parcelable.Creator<MyListClass>() {

            @Override
            public MyListClass createFromParcel(Parcel source) {
                return new MyListClass(source);
            }

            @Override
            public MyListClass[] newArray(int size) {
                return new MyListClass[size];
            }
        };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writetoParcel(Parcel arg0, int arg1) {
        arg0.writeInt(test);
    }
}

解决方法:

问题是,当MyParcelable对象的创建者调用从中重构对象的Parcel的私有构造函数时,ArrayList仍然未初始化,因此为null.

现在,方法调用readTypedList()尝试将Parcels内容写入您指定的ArrayList,该ArrayList抛出NullPointerEception,因为它尚未初始化.

解决方案是在调用该方法之前初始化ArrayList.

public MyParcelable(Parcel in) {
    myInt = in.readInt();
    arrList = new ArrayList<MyListClass>();
    in.readTypedList(arrList, MyListClass.CREATOR);
}

Android ActionBar NullPointerException

Android ActionBar NullPointerException

我想启用 Android ActionBar,但它对我不起作用.

这是我的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>

解决方法

您的Actionbar返回null,因为您没有操作栏但是您正在请求使用getActionbar()

确保您具有显示操作栏的窗口功能,这是操作栏显示所必需的.有关详细信息,请查看以下链接.
…检查此问题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

如何解决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 gradle插件更新到3.3.0抛出NullPointerException

Android gradle插件更新到3.3.0抛出NullPointerException

我刚刚更新到Android Studio 3.3并尝试将Gradle插件更新为3.3.0但项目构建失败.

该项目是一个带有应用程序(使用该库)的库.尝试了一切:清除,重建,重置,删除.gradle目录,甚至没有运气重启计算机.任何的想法?

这是堆栈跟踪

org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':screenz_library'.
    |95 internal calls|
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.android.build.gradle.internal.crash.ExternalApiUsageException: java.lang.NullPointerException
    at com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:137)
    at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:777)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:81)
    at com.android.build.gradle.BasePlugin.lambda$createTasks$4(BasePlugin.java:651)
    at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt:37)
    at com.android.build.gradle.internal.crash.CrashReporting$afterEvaluate$1.execute(crash_reporting.kt)
    at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1$1.run(DefaultListenerBuildOperationDecorator.java:155)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.reapply(DefaultUserCodeApplicationContext.java:58)
    at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:152)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:149)
    at org.gradle.internal.event.broadcastdispatch$ActionInvocationHandler.dispatch(broadcastdispatch.java:91)
    at org.gradle.internal.event.broadcastdispatch$ActionInvocationHandler.dispatch(broadcastdispatch.java:80)
    at org.gradle.internal.event.Abstractbroadcastdispatch.dispatch(Abstractbroadcastdispatch.java:42)
    at org.gradle.internal.event.broadcastdispatch$Singletondispatch.dispatch(broadcastdispatch.java:230)
    at org.gradle.internal.event.broadcastdispatch$Singletondispatch.dispatch(broadcastdispatch.java:149)
    at org.gradle.internal.event.Abstractbroadcastdispatch.dispatch(Abstractbroadcastdispatch.java:58)
    at org.gradle.internal.event.broadcastdispatch$Compositedispatch.dispatch(broadcastdispatch.java:324)
    at org.gradle.internal.event.broadcastdispatch$Compositedispatch.dispatch(broadcastdispatch.java:234)
    at org.gradle.internal.event.Listenerbroadcast.dispatch(Listenerbroadcast.java:140)
    at org.gradle.internal.event.Listenerbroadcast.dispatch(Listenerbroadcast.java:37)
    at org.gradle.internal.dispatch.ProxydispatchAdapter$dispatchingInvocationHandler.invoke(ProxydispatchAdapter.java:93)
    at com.sun.proxy.$Proxy29.afterEvaluate(UnkNown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:187)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:184)
    at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1418)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:193)
    ... 95 more
Caused by: java.lang.NullPointerException
    at org.gradle.api.internal.tasks.DefaultTaskDependency.add(DefaultTaskDependency.java:185)
    at org.gradle.api.internal.AbstractTask$12.run(AbstractTask.java:430)
    at org.gradle.api.internal.tasks.TaskMutator.mutate(TaskMutator.java:40)
    at org.gradle.api.internal.AbstractTask.dependsOn(AbstractTask.java:428)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:169)
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
    at com.google.gms.googleservices.GoogleServicesPlugin.handleVariant(GoogleServicesPlugin.groovy:206)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.gradle.internal.Metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
    at org.gradle.internal.Metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
    at org.gradle.internal.Metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:78)
    at org.codehaus.groovy.runtime.Metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:398)
    at org.codehaus.groovy.runtime.Metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:338)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177)
    at com.google.gms.googleservices.GoogleServicesPlugin$_setupPlugin_closure6.doCall(GoogleServicesPlugin.groovy:148)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.Metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
    at groovy.lang.Closure.call(Closure.java:418)
    at groovy.lang.Closure.call(Closure.java:434)
    at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:71)
    at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:155)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:106)
    at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:167)
    at org.gradle.internal.ImmutableActionSet$SingletonSet.execute(ImmutableActionSet.java:225)
    at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:244)
    at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:233)
    at com.android.build.gradle.LibraryExtension.addVariant(LibraryExtension.java:93)
    at com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:134)
    ... 124 more

解决方法:

我在尝试其他事情的同时找到了解决方案.
出于某种原因,我在我的图书馆的gradle文件中有了Google Services插件,所以我删除了它并且项目构建没有问题.

我删除了这一行

apply plugin: 'com.google.gms.google-services'

Android Library项目说nullpointerexception

Android Library项目说nullpointerexception

我有一个android库项目my_lib基本上my_lib有list活动说MyListActivity它有资源和东西.当我运行Android应用程序’MyListActivity’工作正常.

但是当我创建另一个proj说test_proj并将my_lib作为android库项目添加到test_proj作为库并在AndroidManifest中添加MyListActivity活动并运行我在MyListActivity中得到NullPoiterException,即在findViewById(R.id.list)返回null.我怎样才能解决这个问题

代码如下

onCreate of MyListActivity

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestwindowFeature(Window.FEATURE_NO_TITLE);
    getwindow().addFlags(LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_main);

    initData();

rowItems = new ArrayList<RowItem>();
for (int i = 0; i < titles.length; i++) {
    RowItem item = new RowItem(images[i], titles[i], descriptions[i], packageNames[i]);
    rowItems.add(item);
}

listView = (ListView) findViewById(R.id.list);
CustomListViewAdapter adapter = new CustomListViewAdapter(this, R.layout.list_item, rowItems);
listView.setAdapter(adapter);
listView.setonItemClickListener(this);

}

onCreate of MainActivity of test proj

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startActivity(new Intent(this, ImageTextListViewActivity.class));

}

错误日志如下

D/AndroidRuntime(  778): Shutting down VM
E/AndroidRuntime(  778): FATAL EXCEPTION: main
E/AndroidRuntime(  778): java.lang.NoSuchFieldError: com.mass.applist.R$id.list
E/AndroidRuntime(  778):    at com.mass.applist.MyListActivity.onCreate(MyListActivity.java:55)
E/AndroidRuntime(  778):    at android.app.Activity.performCreate(Activity.java:5104)
E/AndroidRuntime(  778):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
E/AndroidRuntime(  778):    at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2144)
E/AndroidRuntime(  778):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
E/AndroidRuntime(  778):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
E/AndroidRuntime(  778):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
E/AndroidRuntime(  778):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  778):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(  778):    at android.app.ActivityThread.main(ActivityThread.java:5041)
E/AndroidRuntime(  778):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  778):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(  778):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E/AndroidRuntime(  778):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
E/AndroidRuntime(  778):    at dalvik.system.NativeStart.main(Native Method)

解决方法:

的setContentView(R.layout.activity_main);

确保lib中的布局和您的示例活动没有相同的名称.

今天关于android – 实现包含List的Parcelable接口的Object抛出NullPointerExceptionlist包含list的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android ActionBar NullPointerException、Android ContentResolver.insert() 抛出 NullPointerException、Android gradle插件更新到3.3.0抛出NullPointerException、Android Library项目说nullpointerexception的相关知识,请在本站搜索。

本文标签: