2014-02-18 72 views
0

我想從管理頁面活動向課程表中添加課程,但是當我單擊添加課程按鈕時,應用程序強制關閉,出現以下錯誤logcat顯示錯誤java.lang.IllegalStateException:無法執行活動的方法

這裏的logcat的文件:

02-19 00:57:55.826: E/global(354): Deprecated Thread methods are not supported. 
02-19 00:57:55.826: E/global(354): java.lang.UnsupportedOperationException 
02-19 00:57:55.826: E/global(354): at java.lang.VMThread.stop(VMThread.java:85) 
02-19 00:57:55.826: E/global(354): at java.lang.Thread.stop(Thread.java:1379) 
02-19 00:57:55.826: E/global(354): at java.lang.Thread.stop(Thread.java:1344) 
02-19 00:57:55.826: E/global(354): at com.example.universityattendance.SplashScreen$1.run(SplashScreen.java:38) 
02-19 00:58:45.665: E/AndroidRuntime(354): FATAL EXCEPTION: main 
02-19 00:58:45.665: E/AndroidRuntime(354): java.lang.IllegalStateException: Could not execute method of the activity 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.view.View$1.onClick(View.java:2072) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.view.View.performClick(View.java:2408) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.view.View$PerformClick.run(View.java:8816) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.os.Handler.handleCallback(Handler.java:587) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.os.Handler.dispatchMessage(Handler.java:92) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.os.Looper.loop(Looper.java:123) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-19 00:58:45.665: E/AndroidRuntime(354): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 00:58:45.665: E/AndroidRuntime(354): at java.lang.reflect.Method.invoke(Method.java:521) 
02-19 00:58:45.665: E/AndroidRuntime(354): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-19 00:58:45.665: E/AndroidRuntime(354): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-19 00:58:45.665: E/AndroidRuntime(354): at dalvik.system.NativeStart.main(Native Method) 
02-19 00:58:45.665: E/AndroidRuntime(354): Caused by: java.lang.reflect.InvocationTargetException 
02-19 00:58:45.665: E/AndroidRuntime(354): at com.example.universityattendance.AdminPage.addCrs(AdminPage.java:33) 
02-19 00:58:45.665: E/AndroidRuntime(354): at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 00:58:45.665: E/AndroidRuntime(354): at java.lang.reflect.Method.invoke(Method.java:521) 
02-19 00:58:45.665: E/AndroidRuntime(354): at android.view.View$1.onClick(View.java:2067) 
02-19 00:58:45.665: E/AndroidRuntime(354): ... 11 more 
02-19 00:58:45.665: E/AndroidRuntime(354): Caused by: java.lang.NullPointerException 
02-19 00:58:45.665: E/AndroidRuntime(354): ... 15 more 

ADMINPage.class

public class AdminPage extends Activity{ 
    EditText txtCoursename,txtTeacherID,txtSem; 
    DBAdapter dbAdapter; 

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

     txtCoursename = (EditText) findViewById(R.id.editCoursename); 
     txtTeacherID = (EditText) findViewById(R.id.editTPassword); 
     txtSem = (EditText) findViewById(R.id.editSem); 

     dbAdapter = new DBAdapter(this); 
     dbAdapter.open(); 

    } 
    public void addCrs(View v){ 
     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(txtCoursename.getWindowToken(), 0); 
     imm.hideSoftInputFromWindow(txtTeacherID.getWindowToken(), 0); 
     imm.hideSoftInputFromWindow(txtSem.getWindowToken(), 0); 
     try { 

      String coursename = txtCoursename.getText().toString(); 
      String teacherID = txtTeacherID.getText().toString(); 
      String semester = txtSem.getText().toString(); 

      long i = dbAdapter.addCourse(coursename, Integer.parseInt(teacherID), Integer.parseInt(semester)); 
      if (i != -1) 
       Toast.makeText(AdminPage.this, 
         "You have successfully added Course", Toast.LENGTH_LONG) 
         .show(); 
      dbAdapter.close(); 

     } catch (SQLException e) { 
      Toast.makeText(AdminPage.this, "Some problem occurred", 
        Toast.LENGTH_LONG).show(); 

     } 
    } 

這裏的adminpage.xml文件

<EditText 
      android:id="@+id/editCoursename" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" > 

      <requestFocus /> 
     </EditText> 
<EditText 
      android:id="@+id/editTid" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" /> 
<EditText 
      android:id="@+id/editSem" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" /> 
<Button 
     android:id="@+id/adCourseBtn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="addCrs" 
     android:text="Add Course" /> 

DbAdapter.class

public long addCourse(String coursename, int parseInt, int i) { 
    // TODO Auto-generated method stub 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_COURSE_NAME, coursename); 
    initialValues.put(KEY_TEACHER_ID, parseInt); 
    initialValues.put("sem", i); 

    return mDb.insert(DATABASE_TABLE3, null, initialValues); 

} 

Dbhelper.class

private static final String DATABASE_NAME = "attendance.db"; 
private static final int DATABASE_VERSION = 1; 
private static final String TAG = "STUDB"; 
private static final String DATABASE_CREATE1 = 
" CREATE TABLE teacher_data (t_id integer primary key autoincrement, t_name text not null, t_pass text not null);"; 
private static final String DATABASE_CREATE2 = 
" CREATE TABLE student_data (stud_id integer primary key autoincrement, stud_name text not null, stud_roll text not null, sem integer not null);"; 
private static final String DATABASE_CREATE3 = 
" CREATE TABLE course_data (course_id integer primary key autoincrement, course_name text not null, t_id integer , sem integer);"; 

回答

0
txtTeacherID = (EditText) findViewById(R.id.editTPassword); 

還有的在佈局中沒有editTPassword視圖,這裏返回null。在onClick方法調用getText()這裏

String teacherID = txtTeacherID.getText().toString(); 

導致NPE。

通常,NullPointerExceptions很容易調試。查看異常堆棧跟蹤來查看發生異常的代碼行,並找出可能存在的內容。改變它並再次測試。您還可以放置調試器斷點來檢查正在運行的程序的變量。

+0

謝謝@laalto我是如何錯過這個的:D ...你一個救星 – user120044

相關問題