Android 从上下文调用异步任务时出现空指针异常
从上下文调用异步任务时,我的异步任务运行良好,但是, 将值设置为textview时,获取空指针异常 我没有获取对textview的引用…请帮助我在从上下文类调用异步任务时如何获取引用Android 从上下文调用异步任务时出现空指针异常,android,android-listview,android-asynctask,Android,Android Listview,Android Asynctask,从上下文调用异步任务时,我的异步任务运行良好,但是, 将值设置为textview时,获取空指针异常 我没有获取对textview的引用…请帮助我在从上下文类调用异步任务时如何获取引用 05-14 11:44:45.279: E/AndroidRuntime(18314): FATAL EXCEPTION: main 05-14 11:44:45.279: E/AndroidRuntime(18314): Process: com.example.asynctest, PID: 18314 05-
05-14 11:44:45.279: E/AndroidRuntime(18314): FATAL EXCEPTION: main
05-14 11:44:45.279: E/AndroidRuntime(18314): Process: com.example.asynctest, PID: 18314
05-14 11:44:45.279: E/AndroidRuntime(18314): java.lang.NullPointerException
05-14 11:44:45.279: E/AndroidRuntime(18314): at com.example.asynctest.MainActivity$MyAsync.onPostExecute(MainActivity.java:50)
05-14 11:44:45.279: E/AndroidRuntime(18314): at com.example.asynctest.MainActivity$MyAsync.onPostExecute(MainActivity.java:1)
05-14 11:44:45.279: E/AndroidRuntime(18314): at android.os.AsyncTask.finish(AsyncTask.java:632)
05-14 11:44:45.279: E/AndroidRuntime(18314): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-14 11:44:45.279: E/AndroidRuntime(18314): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
05-14 11:44:45.279: E/AndroidRuntime(18314): at android.os.Handler.dispatchMessage(Handler.java:102)
05-14 11:44:45.279: E/AndroidRuntime(18314): at android.os.Looper.loop(Looper.java:136)
05-14 11:44:45.279: E/AndroidRuntime(18314): at android.app.ActivityThread.main(ActivityThread.java:5102)
05-14 11:44:45.279: E/AndroidRuntime(18314): at java.lang.reflect.Method.invokeNative(Native Method)
05-14 11:44:45.279: E/AndroidRuntime(18314): at java.lang.reflect.Method.invoke(Method.java:515)
05-14 11:44:45.279: E/AndroidRuntime(18314): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
05-14 11:44:45.279: E/AndroidRuntime(18314): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
05-14 11:44:45.279: E/AndroidRuntime(18314): at dalvik.system.NativeStart.main(Native Method)
MainClass.java
public class MainActivity extends Activity {
TextView textView;
String textctx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView) findViewById(R.id.textView1);
textView.setText("Main class Text");
MyContextClass contextClass=new MyContextClass(this);
contextClass.MyContextMethod();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void callfromcontext(String contexttext) {
new MyAsync().execute(contexttext);
}
class MyAsync extends AsyncTask<String, String, String>
{
@Override
protected String doInBackground(String... params) {
String sometext=params[0];
return sometext;
}
@Override
protected void onPostExecute(String result) {
System.out.println("result"+result);
textView.setText(result);
}
}
}
public class MyContextClass {
Context context;
public MyContextClass(Context ctx)
{
this.context=ctx;
MainActivity activity=new MainActivity();
String contexttext="Context Class Text";
activity.callfromcontext(contexttext);
}
public void MyContextMethod()
{
}
}
切勿使用新建实例化活动。它们对你想要的任何活动都没有好处
特别是在您的情况下:生命周期方法onCreate()
不会为该活动对象运行,并且TextView
引用存在null
如果确实需要启动活动,请使用意图
如果您只需要获取活动的引用,请将其作为参数传递,例如
void methodThatNeedsActivity(MainActivity activity) {
activity.someMethod();
}
// call from MainActivity
otherObject.methodThatNeedsActivity(this);
请发布完整的novtrend
class。您好,我发布了示例代码Getting无法启动活动组件信息错误。。。做什么?另外,这只是顶层问题,根本原因是stacktrace中的嵌套异常。感谢它的工作:)我忘记创建空构造函数…感谢您的帮助!!!
void methodThatNeedsActivity(MainActivity activity) {
activity.someMethod();
}
// call from MainActivity
otherObject.methodThatNeedsActivity(this);