2012-09-19 58 views
0

每當我嘗試從列表中單擊時,應用程序都會崩潰。當從列表中選擇項目時程序崩潰查看

ListMovingNames.java

public class ListMovingNames extends Activity { 
    ListView MoveList; 
    SQLHandler SQLHandlerview; 
    Cursor cursor; 
    Button addMove; 
    EditText etAddMove; 
    TextView temp; 

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

     addMove = (Button) findViewById(R.id.bAddMove); 
     etAddMove = (EditText) findViewById(R.id.etMoveName); 
     temp = (TextView) findViewById(R.id.tvTemp); 

     MoveList = (ListView) findViewById(R.id.lvMoveItems); 
     SQLHandlerview = new SQLHandler(this); 

     SQLHandlerview = new SQLHandler(ListMovingNames.this); 
     SQLHandlerview.open(); 

     cursor = SQLHandlerview.getMove(); 
     startManagingCursor(cursor); 

     String[] from = new String[]{SQLHandler.KEY_MOVENAME}; 
     int[] to = new int[]{R.id.text}; 

     SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.row, cursor, from, to); 
     MoveList.setAdapter(cursorAdapter); 
     SQLHandlerview.close(); 

     addMove.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
        try { 
         String ssmoveName = etAddMove.getText().toString(); 
         SQLHandler entry = new SQLHandler(ListMovingNames.this); 
         entry.open(); 
         entry.createMove(ssmoveName); 
         entry.close(); 
        } catch (SQLException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
      } 
     }); 

     MoveList.setOnItemClickListener(new OnItemClickListener() { 

      @SuppressLint("ShowToast") 
      public void onItemClick(AdapterView<?> arg0, View view, int position, 
        long id) { 
       // TODO Auto-generated method stub 
//    String moveset = cursor.getString(position); 
//    temp.setText(moveset); 
       Toast.makeText(ListMovingNames.this, position, Toast.LENGTH_SHORT); 
      } 
     }); 
    } 

} 

,這裏是我的數據庫處理程序。但我確信它沒有什麼問題,它可能是遊標適配器。

SQLHandler.java

public class SQLHandler { 
    public static final String KEY_ROOMMOVEHOLDER = "roommoveholder"; 
    public static final String KEY_ROOM = "room"; 

    public static final String KEY_ITEMMOVEHOLDER = "itemmoveholder"; 
    public static final String KEY_ITEMNAME = "itemname"; 
    public static final String KEY_ITEMVALUE = "itemvalue"; 
    public static final String KEY_ROOMHOLDER = "roomholder"; 

    public static final String KEY_MOVENAME = "movename"; 
    public static final String KEY_ID1 = "_id"; 
    public static final String KEY_ID2 = "_id"; 
    public static final String KEY_ID3 = "_id"; 
    public static final String KEY_ID4 = "_id"; 
    public static final String KEY_MOVEDATE = "movedate"; 

    private static final String DATABASE_NAME = "mymovingfriend"; 
    private static final int DATABASE_VERSION = 1; 

    public static final String KEY_SORTANDPURGE = "sortandpurge"; 
    public static final String KEY_RESEARCH = "research"; 
    public static final String KEY_CREATEMOVINGBINDER = "createmovingbinder"; 
    public static final String KEY_ORDERSUPPLIES = "ordersupplies"; 
    public static final String KEY_USEITORLOSEIT = "useitorloseit"; 
    public static final String KEY_TAKEMEASUREMENTS = "takemeasurements"; 
    public static final String KEY_CHOOSEMOVER = "choosemover"; 
    public static final String KEY_BEGINPACKING = "beginpacking"; 
    public static final String KEY_LABEL = "label"; 
    public static final String KEY_SEPARATEVALUES = "separatevalues"; 
    public static final String KEY_DOACHANGEOFADDRESS = "doachangeofaddress"; 
    public static final String KEY_NOTIFYIMPORTANTPARTIES = "notifyimportantparties"; 

    private static final String DATABASE_TABLE1 = "movingname"; 
    private static final String DATABASE_TABLE2 = "movingrooms"; 
    private static final String DATABASE_TABLE3 = "movingitems"; 
    private static final String DATABASE_TABLE4 = "todolist"; 

    public static final String CREATE_TABLE_1 = "CREATE TABLE " + DATABASE_TABLE1 + " (" + 
      KEY_ID1 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_MOVEDATE + " TEXT NOT NULL, " + 
      KEY_MOVENAME + " TEXT NOT NULL);"; 

    public static final String CREATE_TABLE_2 = "CREATE TABLE " + DATABASE_TABLE2 + " (" + 
      KEY_ID2 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_ROOMMOVEHOLDER + " TEXT NOT NULL, " + 
      KEY_ROOM + " TEXT NOT NULL);"; 

    public static final String CREATE_TABLE_3 = "CREATE TABLE " + DATABASE_TABLE3 + " (" + 
      KEY_ID3 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_ITEMNAME + " TEXT NOT NULL, " + 
      KEY_ITEMVALUE + " TEXT NOT NULL, " + 
      KEY_ROOMHOLDER + " TEXT NOT NULL, " + 
      KEY_ITEMMOVEHOLDER + " TEXT NOT NULL);"; 

    public static final String CREATE_TABLE_4 = "CREATE TABLE " + DATABASE_TABLE4 + " (" + 
      KEY_ID4 + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      KEY_SORTANDPURGE + " TEXT NOT NULL, " + 
      KEY_RESEARCH + " INTEGER NOT NULL, " + 
      KEY_CREATEMOVINGBINDER + " TEXT NOT NULL, " + 
      KEY_ORDERSUPPLIES + " TEXT NOT NULL, " + 
      KEY_USEITORLOSEIT + " TEXT NOT NULL, " + 
      KEY_TAKEMEASUREMENTS + " TEXT NOT NULL, " + 
      KEY_CHOOSEMOVER + " TEXT NOT NULL, " + 
      KEY_BEGINPACKING + " TEXT NOT NULL, " + 
      KEY_LABEL + " TEXT NOT NULL, " + 
      KEY_SEPARATEVALUES + " TEXT NOT NULL, " + 
      KEY_DOACHANGEOFADDRESS + " TEXT NOT NULL, " + 
      KEY_NOTIFYIMPORTANTPARTIES + " TEXT NOT NULL);"; 

    private DbHelper ourHelper; 
    private final Context ourContext; 
    private SQLiteDatabase ourDatabase; 

    private static class DbHelper extends SQLiteOpenHelper{ 

     public DbHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 
      db.execSQL(CREATE_TABLE_1); 
      db.execSQL(CREATE_TABLE_2); 
      db.execSQL(CREATE_TABLE_3); 
      db.execSQL(CREATE_TABLE_4); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) { 
      // TODO Auto-generated method stub 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE1); 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE2); 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE3); 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE4); 
      onCreate(db); 
     } 
    } 

    public SQLHandler(Context c){ 
     ourContext = c; 
    } 

    public SQLHandler open() throws SQLException{ 
     ourHelper = new DbHelper(ourContext); 
     ourDatabase = ourHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close(){ 
     ourHelper.close(); 
    } 

    public long createMove(String smovename){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_MOVENAME, smovename); 
     cv.put(KEY_MOVEDATE, "Not yet set"); 
     return ourDatabase.insert(DATABASE_TABLE1, null, cv); 
    } 

    public long addRooms(String sroommoveholder, String sroom){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_ROOMMOVEHOLDER, sroommoveholder); 
     cv.put(KEY_ROOM, sroom); 
     return ourDatabase.insert(DATABASE_TABLE2, null, cv); 
    } 

    public long addItems(String sitemmoveholder, String sroomholder, String sitemname, String sitemvalue){ 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_ITEMMOVEHOLDER, sitemmoveholder); 
     cv.put(KEY_ROOMHOLDER, sroomholder); 
     cv.put(KEY_ITEMNAME, sitemname); 
     cv.put(KEY_ITEMVALUE, sitemvalue); 
     return ourDatabase.insert(DATABASE_TABLE3, null, cv); 
    } 

    public long todoList(String todoitem){ 
     ContentValues cv = new ContentValues(); 
     cv.put(todoitem, "Done"); 
     return ourDatabase.insert(DATABASE_TABLE4, null, cv); 
    } 

    public Cursor getMove(){ 
     String[] columns = new String[]{KEY_ID1, KEY_MOVENAME}; 
     Cursor cursor = ourDatabase.query(DATABASE_TABLE1, columns, null, null, null, null, null); 
     return cursor; 
    } 

} 

任何人都可以指出我在做什麼錯?

這裏的日誌

09-19 03:22:36.596: E/AndroidRuntime(679): FATAL EXCEPTION: main 
09-19 03:22:36.596: E/AndroidRuntime(679): android.content.res.Resources$NotFoundException: String resource ID #0x0 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.content.res.Resources.getText(Resources.java:201) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.widget.Toast.makeText(Toast.java:258) 
09-19 03:22:36.596: E/AndroidRuntime(679): at standard.internet.marketing.mymovingfriend.ListMovingNames$2.onItemClick(ListMovingNames.java:78) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.widget.ListView.performItemClick(ListView.java:3382) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.os.Handler.handleCallback(Handler.java:587) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.os.Looper.loop(Looper.java:123) 
09-19 03:22:36.596: E/AndroidRuntime(679): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-19 03:22:36.596: E/AndroidRuntime(679): at java.lang.reflect.Method.invokeNative(Native Method) 
09-19 03:22:36.596: E/AndroidRuntime(679): at java.lang.reflect.Method.invoke(Method.java:521) 
09-19 03:22:36.596: E/AndroidRuntime(679): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-19 03:22:36.596: E/AndroidRuntime(679): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-19 03:22:36.596: E/AndroidRuntime(679): at dalvik.system.NativeStart.main(Native Method) 
+0

你也缺少** show()**方法在這一行'Toast.makeText(ListMovingNames.this,position,Toast.LENGTH_SHORT);' – Lucifer

+0

你是對的我的不好,但是這並沒有解決問題 – philip

+1

你能提供一個日誌嗎? – NyanLH

回答

2
Toast.makeText(ListMovingNames.this, position, Toast.LENGTH_SHORT); 

第二個參數是資源ID。

Toast.makeText(ListMovingNames.this, String.valueOf(position), Toast.LENGTH_SHORT); 

用這個方法替換掉了。

+0

謝謝先生。你給出了正確的答案。 :)我還有一個問題,但我如何顯示您選擇的列表的內容,而不是位置呢? – philip

+0

從來沒有解決它我自己我只是使用此代碼 '產品=((TextView)視圖).getText()。toString(); temp.setText(product);' – philip

+0

public void onItemClick(AdapterView arg0,View view,int position, long id) –

相關問題