2014-04-25 78 views
0

當我設置setOnLongClickListener爲Views時,它顯示nullpointerexception。在我的代碼 錯誤進來totaltime.setOnLongClickListener,dailytime.setOnLonclicklistener ...等。Activity中的java.lang.NullPointerException異常

下面是我的代碼。

public class PrincipalActivity extends Activity { 
    DefaultSpeedoView totaltime; 
    DefaultSpeedoView1 dailytime; 
    DefaultSpeedoView4 loadcount; 
    DefaultSpeedoView5 elapsetime; 
    DefaultSpeedoView6 yearlytime; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     mdb = new MyDataBase(this); 
     setContentView(R.layout.principal); 
     editornot=(TextView) findViewById(R.id.edited); 


     totaltime=(DefaultSpeedoView) findViewById(R.id.totaltime); 
     dailytime=(DefaultSpeedoView1) findViewById(R.id.dailytime); 
     yearlytime=(DefaultSpeedoView6) findViewById(R.id.yearlytime); 
     loadcount=(DefaultSpeedoView4) findViewById(R.id.loadcount); 
     elapsetime=(DefaultSpeedoView5) findViewById(R.id.elapsetime); 
     editmodecolorchange=(RelativeLayout)findViewById(R.id.editmodecolorchange); 
     totaltime.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View arg0) { 
       alertDialog("Total Time"); 
       return false; 
      } 
     }); 
     dailytime.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View arg0) { 
       alertDialog("Daily Time"); 
       return false; 
      } 
     }); 
     yearlytime.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View arg0) { 
       alertDialog("Yearly Time"); 
       return false; 
      } 
     }); 
     loadcount.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View arg0) { 
       alertDialog1("Load Count"); 
       return false; 
      } 
     }); 
     elapsetime.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View arg0) { 
       alertDialog1("Elapse Time"); 
       return false; 
      } 
     }); 
} 

DefaultSpeedoView.Java

public DefaultSpeedoView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     this.con = context; 
     // TODO Auto-generated constructor stub 
     init(); 

    } 

    public DefaultSpeedoView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.con = context; 
     init(); 
    } 

    public DefaultSpeedoView(Context context) { 
     super(context); 

     this.con = context; 
     init(); 

    } 

的xml:

 <com.appp.Timer.DefaultSpeedoView 
      android:id="@+id/totaltime" 
      android:layout_width="250dp" 
      android:layout_height="215dp" 
      android:longClickable="true" 
      android:layout_marginLeft="50dp" /> 

日誌:

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.shipp.activity/org.shipp.activity.PrincipalActivity}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3687) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at org.shipp.activity.PrincipalActivity.onCreate(PrincipalActivity.java:179) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
+1

您可以發佈日誌你有 –

+0

我在我的問題中追加一個日誌。 – srinu

+0

@ user3519309 179行是什麼? – Raghunandan

回答

0
dailytime=(DefaultSpeedoView1) findViewById(R.id.dailytime); 
    yearlytime=(DefaultSpeedoView6) findViewById(R.id.yearlytime); 
    loadcount=(DefaultSpeedoView4) findViewById(R.id.loadcount); 
    elapsetime=(DefaultSpeedoView5) findViewById(R.id.elapsetime); 
    editmodecolorchange=(RelativeLayout)findViewById(R.id.editmodecolorchange); 

你應該在你的XML文件中正確指定他們像

<com.appp.Timer.DefaultSpeedoView 
     android:id="@+id/dailytime" 
     android:layout_width="250dp" 
     android:layout_height="215dp" 
     android:longClickable="true" 
     android:layout_marginLeft="50dp" /> 

和正確投那些DefaultSpeedoView(不DefaultSpeedoView1DefaultSpeedoView2等)

+0

這將是ClassCastException異常不NullPointerExcpetion \ – Raghunandan

+1

由於Raghunandan其工作。我改變了id名稱,實際上我使用了3 xml,如HDPI,XHDPI,MDPI,在這個1 xml不匹配的id名稱中。 – srinu

相關問題