在android中获取上下文和活动对象null

Posted

技术标签:

【中文标题】在android中获取上下文和活动对象null【英文标题】:getting context and activity object null in android 【发布时间】:2014-04-12 08:20:17 【问题描述】:

我正在尝试从不是活动的单独课程中祝酒。为此,我知道我需要活动上下文。但我不知道为什么我在那个类中得到空上下文

这是我的敬酒课

public class Notifier 

public Notifier()



public Notifier(Context ctx, MainActivity activity)
Log.d("Constructor call", "dd");
context = ctx;
activity = activity;


public void toast(String message)  
messageData = message;
Log.d("Notifier Data", messageData);

while(context == null || activity == null)
    Log.d("Context", "issue");
    try
    Thread.sleep(1000);
     catch(InterruptedException exception)
    exception.printStackTrace();
    

activity.runOnUiThread(new Runnable() 
    public void run() 
        Toast.makeText(context, "messageData", Toast.LENGTH_SHORT).show();
    
    ); 


Context context;
String messageData;
esActivity activity;

这是我在 MainActivity 的 onCreate 中的调用

     Notifier nt = new Notifier(getApplicationContext, MainActivity.this);

【问题讨论】:

现在它卡在了这里,否则它会在 toast 上给出 nullpointer 异常 您是否收到此日志 - Log.d("Context", "issue");试试@Henry 的回答。 是的,我得到了..如果我删除它,它会给出空指针 这一行是否完全在你的代码中是如何出现的?:Notifier nt = new Notifier(getApplicationContext, MainActivity.this); 这意味着你有一个名为getApplicationContext的变量,否则它不会编译。 【参考方案1】:

我猜activity 为空。检查你的构造函数:

public Notifier(Context ctx, MainActivity activity)
Log.d("Constructor call", "dd");
context = ctx;
activity = activity;

分配activity = activity; 无效。你想要的是

this.activity = activity;

【讨论】:

不,还在里面,而上下文和活动都为空 你怎么知道两者都是null?为什么那里有一个循环(活动和上下文不会改变)? 我正在检查,而两者都一个一个检查......这只是为了检查,因为它给出了空指针异常 “我正在一个一个地检查”:是什么让你认为这就是这里发生的事情?它只会每秒输出一次日志消息,直到您终止应用程序。

以上是关于在android中获取上下文和活动对象null的主要内容,如果未能解决你的问题,请参考以下文章

在分离的片段中获取上下文/活动?

Android 啥是上下文? [复制]

从非活动单例类中获取应用程序上下文

从非活动单例类获取应用程序上下文

Android Studio - 在主要活动中定义需要上下文和属性的类

Java 代码没有在 Android Studio 中启动新活动?和上下文有关吗?