2014-05-13 3 views
-1
에서 작업을 비동기 호출 할 때

널 포인터 예외 상황

는 참조 텍스트 뷰을받지 못하고 있습니까 널 포인터 예외를 받고 텍스트 뷰 할 수있는 값을 설정할 때, 을 컨텍스트에서 작업을 비동기 호출하지만 때 내 비동기 작업이 잘 작동

제발 ... ... 어떻게 문맥 클래스에서 비동기 작업을 호출 참조를 얻을하는 데 도움이

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); 

     } 


    } 

} 

M

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() 
    { 

    } 

} 
yContextClass.java

+0

관련 코드를 게시하십시오. – Leandros

+0

'NovvTrend' 클래스를 게시하십시오. – rogcg

+0

안녕하세요, 내 샘플 코드 –

답변

0
MainActivity activity=new MainActivity(); 

new로 활동을 인스턴스화하지 마십시오. 그들은 당신이 원하는 활동에 좋지 않을 것입니다.

구체적으로 : 라이프 사이클 메소드 onCreate()은 해당 활동 객체에 대해 실행되지 않으며 TextView 참조는 null입니다.

실제로 활동을 시작해야하는 경우 Intent을 사용하십시오.

활동에 대한 참조 만하면됩니다.

void methodThatNeedsActivity(MainActivity activity) { 
    activity.someMethod(); 
} 

// call from MainActivity 
otherObject.methodThatNeedsActivity(this); 
+0

을 게시했습니다. 활동 구성 정보 오류 –

+0

을 시작할 수 없습니다. 무엇을하고 있습니까? 또한 이것은 최상위 수준의 문제 일 뿐이며 근본 원인은 스택 추적의 중첩 예외입니다. – laalto

+0

감사합니다 그 작동 :) 나는 빈 생성자를 만드는 걸 잊었 네 ... 네 도움을 주셔서 감사합니다! –