2014-02-26 68 views
0
package com.testgcm; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.net.URLConnection; 
import java.net.URLEncoder; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.widget.TextView; 



public class SigninActivity extends AsyncTask<String,Void,String> { 
private TextView statusField; 
private Context context; 
private ProgressDialog progress; 
private MainActivity act; 
public AsyncResponse delegate=null; 
//flag 0 means get and 1 means post.(By default it is get.) 
public SigninActivity(Context context,TextView statusField,ProgressDialog progress,int flag) { 
     this.context = context; 
     this.statusField = statusField; 
     this.progress=progress; 
    } 

    protected void onPreExecute(){ 
     progress.show(); 
    } 
    protected String doInBackground(String arg0[]) { 



     try{ 
      String username = (String)arg0[0]; 
      String password = (String)arg0[1]; 
      String link="http://192.168.43.160/Studentadministration/login_check.php"; 
      String data = URLEncoder.encode("username", "UTF-8") 
      + "=" + URLEncoder.encode(username, "UTF-8"); 
      data += "&" + URLEncoder.encode("password", "UTF-8") 
      + "=" + URLEncoder.encode(password, "UTF-8"); 
      URL url = new URL(link); 
      URLConnection conn = url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter 
      (conn.getOutputStream()); 
      wr.write(data); 
      wr.flush(); 
      BufferedReader reader = new BufferedReader 
      (new InputStreamReader(conn.getInputStream())); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      // Read Server Response 
      while((line = reader.readLine()) != null) 
      { 
       sb.append(line); 
       break; 
      } 



      return sb.toString(); 

     }catch(Exception e){ 
      return new String("Exception: " + e.getMessage()); 
     } 

    } 
    protected void onPostExecute(String result){ 

     progress.dismiss(); 
     delegate.processFinish(result); 

     } 

}使用我从onPOstexecute方法获取数据我移动到另一个活动,在这里,我处理数据,我已经创造了asyncresponse空指针异常onPostExecute方法的AsyncTask

接口

在登录活动

public void processFinish(String output) { 
    // TODO Auto-generated method stub 
    status.setText(output); 
    if(output.equals(usname.getText().toString())){ 
     Intent in=new Intent(Login.this,MainActivity.class); 
     startActivity(in); 
    } 
    else{ 
     status.setText("Authentication Failed!!!"); 
    } 
} 

的logcat:

02-26 14:32:26.839: D/AndroidRuntime(5181): Shutting down VM 
02-26 14:32:26.839: W/dalvikvm(5181): threadid=1: thread exiting with uncaught exception (group=0x4158bc80) 
02-26 14:32:26.839: E/AndroidRuntime(5181): FATAL EXCEPTION: main 
02-26 14:32:26.839: E/AndroidRuntime(5181): Process: com.testgcm, PID: 5181 
02-26 14:32:26.839: E/AndroidRuntime(5181): java.lang.NullPointerException 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at com.testgcm.SigninActivity.onPostExecute(SigninActivity.java:81) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at com.testgcm.SigninActivity.onPostExecute(SigninActivity.java:1) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at android.os.AsyncTask.finish(AsyncTask.java:632) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at android.os.Looper.loop(Looper.java:136) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at android.app.ActivityThread.main(ActivityThread.java:5081) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126) 
02-26 14:32:26.839: E/AndroidRuntime(5181):  at dalvik.system.NativeStart.main(Native Method) 
02-26 14:33:29.729: I/Process(5181): Sending signal. PID: 5181 SIG: 9 
02-26 14:33:36.789: I/Adreno-EGL(5516): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 
02-26 14:33:36.809: D/OpenGLRenderer(5516): Enabling debug mode 0 
02-26 14:33:36.889: I/ActivityManager(5516): Timeline: Activity_idle id: [email protected] time:25119895 
02-26 14:33:45.209: D/AndroidRuntime(5516): Shutting down VM 
02-26 14:33:45.209: W/dalvikvm(5516): threadid=1: thread exiting with uncaught exception (group=0x4158bc80) 
02-26 14:33:45.219: E/AndroidRuntime(5516): FATAL EXCEPTION: main 
02-26 14:33:45.219: E/AndroidRuntime(5516): Process: com.testgcm, PID: 5516 
02-26 14:33:45.219: E/AndroidRuntime(5516): java.lang.NullPointerException 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at com.testgcm.SigninActivity.onPostExecute(SigninActivity.java:81) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at com.testgcm.SigninActivity.onPostExecute(SigninActivity.java:1) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at android.os.AsyncTask.finish(AsyncTask.java:632) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at android.os.Looper.loop(Looper.java:136) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at android.app.ActivityThread.main(ActivityThread.java:5081) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126) 
02-26 14:33:45.219: E/AndroidRuntime(5516):  at dalvik.system.NativeStart.main(Native Method) 
02-26 14:33:46.799: I/Process(5516): Sending signal. PID: 5516 SIG: 9 
02-26 14:33:49.979: I/Adreno-EGL(5648): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 
02-26 14:33:50.019: D/OpenGLRenderer(5648): Enabling debug mode 0 
02-26 14:33:50.069: I/ActivityManager(5648): Timeline: Activity_idle id: [email protected] time:25133075 
02-26 14:33:58.499: D/AndroidRuntime(5648): Shutting down VM 
02-26 14:33:58.499: W/dalvikvm(5648): threadid=1: thread exiting with uncaught exception (group=0x4158bc80) 
02-26 14:33:58.509: E/AndroidRuntime(5648): FATAL EXCEPTION: main 
02-26 14:33:58.509: E/AndroidRuntime(5648): Process: com.testgcm, PID: 5648 
02-26 14:33:58.509: E/AndroidRuntime(5648): java.lang.NullPointerException 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at com.testgcm.SigninActivity.onPostExecute(SigninActivity.java:81) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at com.testgcm.SigninActivity.onPostExecute(SigninActivity.java:1) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at android.os.AsyncTask.finish(AsyncTask.java:632) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at android.os.AsyncTask.access$600(AsyncTask.java:177) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at android.os.Looper.loop(Looper.java:136) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at android.app.ActivityThread.main(ActivityThread.java:5081) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:781) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:126) 
02-26 14:33:58.509: E/AndroidRuntime(5648):  at dalvik.system.NativeStart.main(Native Method) 
02-26 14:34:00.719: I/Process(5648): Sending signal. PID: 5648 SIG: 9 

即使我尝试跳从AsyncTask到另一个Activity同样的错误发生时, 我能够从服务器获取数据,但它没有得到存储在onPostExecute方法的结果变量, 任何帮助将不胜感激,谢谢

+1

张贴您的logcat – SMR

+0

什么是SigninActivity.java文件的第81行? – nKn

+2

'公共AsyncResponse委托=空;' - >也许这响铃? – cosmincalistru

回答

4

这条线是你的问题

delegate.processFinish(result); 

您的delegate对象为空。你声明它并且永远不会为它分配一个实例。

+0

是的,我已经实例化了委托对象,但现在我在public void processFinish(String output)方法中的status.setText(output)中获得了null pointerexception。该值在输出变量中,但不知道为什么它显示空指针异常 – Natto

2

此处出错delegate.processFinish(result);需要为delegate指定实例。

+0

是的,我已经实例化了委托对象,但现在我在public void processFinish(String output)方法中的status.setText(output)中获得了null pointerexception。该值在输出变量中,但不知道为什么它显示空指针异常 – Natto

+0

这是什么状态?你分配了实例 –

+0

状态只是一个textview,yaa我做过,我试过同样的异步任务,它的工作,但问题发生在传递值我猜,所以它没有得到值 – Natto

2

我发现你的delegate变量已经初始化了。初始化之前您输入onPostExecute方法。

1

在你的代码有:

public AsyncResponse delegate=null; 

,后来

delegate.processFinish(result); 

你是怎么想到要发生什么?

1

代表是null

当您正在执行的空委托操作(delegate.processFinish(result);),这点导致NullpointerException

+0

是的,我已经实例化委托对象,但现在我得到null pointerexception在公共无效processFinish(字符串输出)status.setText(输出)方法。值在输出变量中,但不知道为什么它显示空指针异常 – Natto

0

即使在传递值之后它会显示异常“只有创建视图层次结构的原始线程才能触及其视图”。因此,我只是简单地在异步任务本身中操作数据,而不是将值传递回活动。谢谢你们回答我的问题。