2012-12-28 45 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先生请回复 –

相关问题