每当我想从我的班级运行 Intent 时,NPE [重复]
Posted
技术标签:
【中文标题】每当我想从我的班级运行 Intent 时,NPE [重复]【英文标题】:NPE whenever I want to run Intent from my class [duplicate] 【发布时间】:2020-06-12 07:39:46 【问题描述】:我是 android 应用开发的初学者。我已经完成了一些 Udemy 课程,但后来我意识到 Android Docs 实际上可能更适合为应用程序开发打下良好的基础。我现在正在尝试构建自己的应用程序,但遇到了这个问题。
我的班级
public class deleteInfluencer extends AppCompatActivity
private Repository instanceOfRepository;
public static final int EDIT_BLOGGER_ACTIVITY_REQUEST_CODE = 1;
deleteInfluencer(Application application)
super();
instanceOfRepository = new Repository(application);
void callDeleteInfluencer(int id)
instanceOfRepository.deleteInfluencerCalledFromRepository(id);
void callUpdateInfluencer()
Intent intent = new Intent(this, EditBloggerActivity.class);
startActivityForResult(intent, EDIT_BLOGGER_ACTIVITY_REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == EDIT_BLOGGER_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK)
int id = 0;
Tables tables = new Tables(
id, // Blogger ID
data.getStringExtra(EditBloggerActivity.EXTRA_EDIT_REPLY_NAME),
data.getStringExtra(EditBloggerActivity.EXTRA_EDIT_REPLY_ADDRESS),
data.getStringExtra(EditBloggerActivity.EXTRA_EDIT_REPLY_MOBILE_NUMBER),
data.getStringExtra(EditBloggerActivity.EXTRA_EDIT_REPLY_FB),
data.getStringExtra(EditBloggerActivity.EXTRA_EDIT_REPLY_IG),
data.getStringExtra(EditBloggerActivity.EXTRA_EDIT_REPLY_EMAIL));
instanceOfRepository.updateInfluencerCalledFromRepository(tables);
else
Toast.makeText(this, "Save Failed! fill out all fields", Toast.LENGTH_LONG).show();
LOGCAT
2020-02-28 16:10:06.071 4258-4258/com.kurtsample.digitalcirclesprototype E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kurtsample.digitalcirclesprototype, PID: 4258
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:142)
at android.content.ComponentName.<init>(ComponentName.java:130)
at android.content.Intent.<init>(Intent.java:6082)
at com.kurtsample.digitalcirclesprototype.deleteInfluencer.callUpdateInfluencer(deleteInfluencer.java:31)
at com.kurtsample.digitalcirclesprototype.Adapter$2.onClick(Adapter.java:95)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
【问题讨论】:
检查这个:***.com/questions/28515049/… 我不打算让它成为一个活动。我希望它是一个包含我需要更新数据库中数据的方法的类。 【参考方案1】:将Intent intent = new Intent(this, EditBloggerActivity.class);
中的this
替换为deleteInfluencer.this
。所以你会有Intent intent = new Intent(deleteInfluencer.this, EditBloggerActivity.class);
另外,还有几点需要注意:
-
活动类不应有构造函数。如果你想要什么
要充当构造函数,您可以使用生命周期方法。
您的类名应以大写字母开头,并带有
单词“活动”,因此
deleteInfluencer
应该
是DeleteInfluencerActivity
【讨论】:
我实际上希望这个类只包含我需要能够更新我的数据库中的数据的方法。我从来没有打算让它成为一个完整的活动。如果这个类已经被认为是一个活动,有没有办法把它变成我想要的?以上是关于每当我想从我的班级运行 Intent 时,NPE [重复]的主要内容,如果未能解决你的问题,请参考以下文章
HTTPS时,React截取/ auth / twitter /。我想从我的节点服务器访问/ auth / twitter /而不是反应应用程序
我想从我的 android 应用程序分享到 whatsapp 的链接 [重复]
当我想在 Google BigQuery 中创建 StandardSQLTypeName.ARRAY 类型的字段时接收 NPE