2012-12-28 44 views
0

嗨我試圖通過使用Web服務axis2顯示數據從MySQL到Android列表視圖。 當我運行我的應用程序獲得以下豁免。 這裏是logcat的細節RuntimeException:無法啓動活動ComponentInfo:java.lang.NullPointerException

12-28 21:20:45.180: E/AndroidRuntime(406): FATAL EXCEPTION: main 
12-28 21:20:45.180: E/AndroidRuntime(406): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kbj/com.kbj.Invitation}: java.lang.NullPointerException 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.os.Looper.loop(Looper.java:123) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-28 21:20:45.180: E/AndroidRuntime(406): at java.lang.reflect.Method.invokeNative(Native Method) 
12-28 21:20:45.180: E/AndroidRuntime(406): at java.lang.reflect.Method.invoke(Method.java:521) 
12-28 21:20:45.180: E/AndroidRuntime(406): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
12-28 21:20:45.180: E/AndroidRuntime(406): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
12-28 21:20:45.180: E/AndroidRuntime(406): at dalvik.system.NativeStart.main(Native Method) 
12-28 21:20:45.180: E/AndroidRuntime(406): Caused by: java.lang.NullPointerException 
12-28 21:20:45.180: E/AndroidRuntime(406): at com.kbj.Invitation.onCreate(Invitation.java:49) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
12-28 21:20:45.180: E/AndroidRuntime(406): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
12-28 21:20:45.180: E/AndroidRuntime(406): ... 11 more 
12-28 21:20:50.690: I/Process(406): Sending signal. PID: 406 SIG: 9 

這裏是我的功能在Web服務類

1 retrieveData

public ArrayList<InvitePlayerDetails> retrievePlayer(String userName){ 

    Connection conn=null; 
    PreparedStatement stmt=null; 

     ResultSet result = null; 
     String retrievedUserName = ""; 
     //Boolean b = false; 
    // String retrievedPassword = ""; 
     ArrayList<InvitePlayerDetails> playersList = new ArrayList<InvitePlayerDetails>(); 

    try{ 


     conn = Util.getConnection(); 
     stmt = conn.prepareStatement("SELECT kbj_username FROM kbj_registration"); 
     result = stmt.executeQuery(); 
     System.out.println(result); 

     while(result.next()){ 
     retrievedUserName = result.getString("kbj_username"); 
     System.out.println(retrievedUserName); 
     InvitePlayerDetails p1 = new InvitePlayerDetails(retrievedUserName, false); 
     // ArrayList<InvitePlayerDetails> playersList = new ArrayList<InvitePlayerDetails>(retrievedUserName, b); 
     playersList.add(p1); 

     System.out.println("PlayerListAdded" + playersList); 
    } 


     } 
     catch(SQLException e) 
     { 
      e.printStackTrace(); 
     } 

     finally 
     {   
     Util.CloseDbResources(result, stmt, conn); 

     } 
return playersList; 
} 
} 

這裏是我的android活動功能..

公共課邀請延伸活動 {

private final String NAMESPACE = "http://ws.kbj.com"; 
private final String URL = "http://10.0.2.2:8085/WS_KBJ/services/Kbj_WebService?wsdl"; 
private final String SOAP_ACTION = "http://ws.kbj.com/retrievePlayer"; 
private final String METHOD_NAME = "retrievePlayer"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 


    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.invitation); 

    final TextView userName = (TextView) findViewById(R.id.CurPlayername); 
    userName.setText(getIntent().getExtras().getString("UserName")); 

    final Button fbBtn = (Button) findViewById(R.id.fbButton); 
    final Button inviteBtn = (Button) findViewById(R.id.inviteBtn); 
    ListView listView = (ListView) findViewById(R.id.invitePlayerList); 
    ArrayList<InvitePlayerDetails> playersList = new ArrayList<InvitePlayerDetails>(); 


    playersList = retriveData(); 


    InvitePlayersBaseAdapter adapter = new InvitePlayersBaseAdapter(this, playersList); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> arg0, View v, int position, 
       long id) { 

     } 
    }); 
    final Intent openFbOrTwLoginPage = new Intent(this, FbOrTwLogin.class); 
    final Intent openNotificationPage = new Intent(this, Notification.class); 
    fbBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      startActivity(openFbOrTwLoginPage); 

     } 
    }); 
    twBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      startActivity(openFbOrTwLoginPage); 

     } 
    }); 
    inviteBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(openNotificationPage); 

     } 
} 

public ArrayList<InvitePlayerDetails> retriveData(){ 
ArrayList<InvitePlayerDetails> playersList = new ArrayList<InvitePlayerDetails>(); 
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
PropertyInfo unameProp =new PropertyInfo(); 
    unameProp.setName("userName");//Define the variable name in the web service method 
    unameProp.setValue(title);//set value for userName variable 
    unameProp.setType(String.class);//Define the type of the variable 
    request.addProperty(unameProp); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try{ 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
      SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 


      System.out.println("SoapPriitive:"+response); 
      //status1 = Boolean.parseBoolean(response.toString()); 

    } 
    catch(Exception e){ 

    } 


    return playersList; 
} 

}

,我已創建了一個POJO類,這是

public class InvitePlayerDetails { 


private String invitedplayerName; 
private boolean ckBox; 
    public InvitePlayerDetails(String invitedplayerName,boolean cb1) { 
     this.invitedplayerName = invitedplayerName; 
     this.ckBox = cb1; 
    } 

public String getInvitedplayerName() { 
    return invitedplayerName; 
} 
public void setInvitedplayerName(String invitedplayerName) { 
    this.invitedplayerName = invitedplayerName; 
} 
public boolean getCkBox() { 
    return ckBox; 
} 
public void setCkBox(boolean b) { 
    this.ckBox = b; 
} 

} 

請幫我這個.. 告訴我哪裏是錯誤的,我的代碼.. 如果有人在這裏使用axis2在列表視圖中顯示來自mysql的數據的代碼.. 對不起,我的英語.. KS提前..

+4

'由com.kbj.Invitation.onCreate(Invitation.java:49)引發java.lang.NullPointerException'邀請中的第49行是什麼? – Sam

+0

嗨先生..邀請是android的android類主..當我點擊登錄按鈕控制去邀請活動..這是我的登錄類代碼\t btnLogin.setOnClickListener(新視圖。OnClickListener(){ \t \t \t公共無效的onClick(查看爲arg0){ \t \t \t \t // TODO自動生成方法存根 \t \t \t \t布爾狀態=則loginAction(); \t \t \t \t如果(狀態== TRUE){ \t \t \t \t \t \t \t \t \t \t intent.putExtra( 「用戶名」,USER_NAME); \t \t \t \t \t //intent.putExtra("Content「,listDescriptionString); \t \t \t \t \t startActivity(openInvitationPage); \t \t \t \t}否則{ \t \t \t \t \t result.setText( 「登錄失敗!!」); \t \t \t \t} \t \t \t \t \t \t \t} \t \t \t \t}); –

+2

請點擊「[編輯]」將您的代碼添加到您的問題中,並指出哪一行是49.但是您忘記初始化'btnLogin','intent'或'result'。 – Sam

回答

0

您還沒有指出哪些行是49,但我有一對夫婦的猜測:

userName.setText(getIntent().getExtras().getString("UserName")); 

在這裏,你不檢查是否getIntent()getExtras(),甚至getString("UserName")返回NULL。在嘗試使用它之前,應該確保每個方法都返回有效的數據。

而且我沒有看到twBtn其他地方:

twBtn.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     startActivity(openFbOrTwLoginPage); 

    } 
}); 

它沒有初始化,甚至定義...

如果這些都不是在第49行,然後仔細檢查您的佈局invitation.xml以確保查看您搜索的findViewById()是在這種佈局。否則findViewById()將返回空值...

+0

「如果這些都不在49行」。哈哈,如果它甚至不findViewById()然後檢查第49行,你會得到一個NullPointerException。 :D – varevarao

+0

@Sam你好,這裏是twBtn聲明final Button twBtn =(Button)findViewById(R.id.twButton);像這樣我已經在android類中聲明瞭twbtn,並在xml文件中聲明瞭twButton中的這個id .. –

+0

@Sam先生請回復 –

相關問題