2013-04-06 260 views
0

我正在努力找出这一个out.When我点击我的活动它崩溃与NullPointerException.I试过调试,但我无法进入有问题的活动。我是尝试删除数据库,仍然崩溃。我试图删除ListView,仍崩溃。我试图修改数据库,仍然崩溃。空指针异常

由于某些奇怪的原因,当我在“playbutton”上删除按钮及其onClickListener时,我能够进入活动并且活动中的所有内容都能正常工作。有人可以帮助我解释为什么此按钮会导致应用程序崩溃该活动,而不是onclick?

04-05 23:15:15.886: E/AndroidRuntime(11445): FATAL EXCEPTION: main 
04-05 23:15:15.886: E/AndroidRuntime(11445): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fullfrontalgames.numberfighter/com.fullfrontalgames.numberfighter.PlayAFriend}: java.lang.NullPointerException 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2136) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2174) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.ActivityThread.access$700(ActivityThread.java:141) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1267) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.os.Looper.loop(Looper.java:137) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.ActivityThread.main(ActivityThread.java:5059) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at java.lang.reflect.Method.invoke(Method.java:511) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at dalvik.system.NativeStart.main(Native Method) 
04-05 23:15:15.886: E/AndroidRuntime(11445): Caused by: java.lang.NullPointerException 
04-05 23:15:15.886: E/AndroidRuntime(11445): at com.fullfrontalgames.numberfighter.PlayAFriend.onCreate(PlayAFriend.java:54) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.Activity.performCreate(Activity.java:5058) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
04-05 23:15:15.886: E/AndroidRuntime(11445): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 

活动

package com.fullfrontalgames.numberfighter; 
import com.fullfrontalgames.numberfighter.DBAdapter; 
import com.fullfrontalgames.numberfighter.R; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 



import android.os.Bundle; 

import android.support.v4.widget.SimpleCursorAdapter; 


import android.view.View; 
import android.widget.Button; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 




public class PlayAFriend extends Activity{ 
    DBAdapter DBAdapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.playafriend); 

     final DBAdapter db = new DBAdapter(this); 
     DBAdapter = db.open(); 

     ListView FriendLV = (ListView) findViewById(android.R.id.list); 
     Button playbutton = (Button) findViewById(R.id.playbutton); 
     final TextView friend = (TextView) findViewById(R.id.textview_friends); 



     Cursor friendslist = db.GetAllFriends(); 

     String[] from = new String[] {"FRIENDS"}; // your column/columns here 
     int[] to = new int[] {R.id.textview_friends}; 

     @SuppressWarnings("deprecation") 
     ListAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.list_items, friendslist, from, to,0); 
      FriendLV.setAdapter(cursorAdapter); 



      playbutton.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        String Defender = friend.getText().toString(); 
        db.GetFriend(Defender); 
        startActivity(new Intent ("com.fullfrontalgames.numberfighter.Fightattacker")); 
        db.close(); 
       } 
      }); 





    } 

    } 

playafriend XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/nfbackground" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@id/titlebar" 
     android:layout_width="wrap_content" 
     android:layout_height="66dp" 
     android:src="@drawable/nftitlebar" /> 


     <ListView 
      android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 







     </ListView> 






</LinearLayout> 

list_items XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dp" 
     android:background="@drawable/searchimageview" 
     android:orientation="vertical" > 

     <Button 
     android:id="@+id/playbutton" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_gravity="right" 
     android:background="@drawable/playbutton" /> 

<TextView 
    android:id="@+id/textview_friends" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/black" 
    android:textStyle="bold" 
    android:textSize="40dp" 
    android:layout_gravity="center" /> 


    </FrameLayout> 



</LinearLayout> 
+5

请加满堆栈跟踪扩展ListActivity。 – BobTheBuilder 2013-04-06 03:31:15

+2

你可能不应该有这些行DBAdapter DBAdapter;和DBAdapter = db.open();相反,db.open();应该就够了。无论如何,朋友或数据库都是空的。请发布logcat错误消息。 – Luis 2013-04-06 03:36:17

+0

发布你的logcat会更好地理解你的问题。另请发布您的布局文件代码。 – GrIsHu 2013-04-06 03:38:00

回答

1

请TR这个代码。

public class Test extends Activity{ 
     DBAdapter DBAdapter; 
     ListView FriendLV; 
     Button playbutton; 
     final TextView friend; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.playafriend); 
     final DBAdapter db = new DBAdapter(this); 
     db.open(); 
     Cursor friendslist = db.GetAllFriends(); 
     if(friendslist.getCount()!=0){ 
      FriendLV = (ListView) findViewById(android.R.id.list); 
      playbutton = (Button) findViewById(R.id.playbutton); 
      friend = (TextView) findViewById(R.id.textview_friends); 
      String[] from = new String[] {"FRIENDS"}; // your column/columns here 
       int[] to = new int[] {R.id.textview_friends}; 

       @SuppressWarnings("deprecation") 
       ListAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.list_items, friendslist, from, to,0); 
        FriendLV.setAdapter(cursorAdapter); 
        playbutton.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View v) { 
          // TODO Auto-generated method stub 

          String Defender = friend.getText().toString(); 
          db.GetFriend(Defender); 
          startActivity(new Intent ("com.fullfrontalgames.numberfighter.Fightattacker")); 
          db.close(); 
         } 
        }); 
     } 
    } 

    } 

如果您有任何问题,请让我知道。

+0

我的零点已解决,但我试过这个代码按钮doesn不工作我只需要采取不同的方法,或者改变OnItemCLickListener并放弃播放按钮。 – Cranosaur 2013-04-06 04:49:50

+0

看到我更新的代码。 – Harshid 2013-04-06 04:53:21

+0

不,它没有影响这个playbutton是只显示没有onclick除了我在列表下面的那个 – Cranosaur 2013-04-06 05:08:20

0

你的活动应该如使用列表视图