2012-11-05 13 views
0

這是一個android項目。我正在使用一個數組來構建一個微調器,它可以正常工作。不過,我現在正試圖將一條記錄添加到數組的開頭,以便在頁面加載時不選擇任何選項。Java - 添加單個字符串來啓動數組

我試圖只需使用一個myarray.add("---")類型的事情,但它與下面的錯誤倒下:

11-05 10:50:36.995: D/AndroidRuntime(16763): Shutting down VM 
11-05 10:50:36.995: W/dalvikvm(16763): threadid=1: thread exiting with uncaught exception (group=0x412b42a0) 
11-05 10:50:37.000: E/AndroidRuntime(16763): FATAL EXCEPTION: main 
11-05 10:50:37.000: E/AndroidRuntime(16763): java.lang.NullPointerException 
11-05 10:50:37.000: E/AndroidRuntime(16763): at com.directenquiries.assessment.tool.AddAsset.updateLocalDesc(AddAsset.java:461) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at com.directenquiries.assessment.tool.AddAsset$3.onItemSelected(AddAsset.java:262) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.widget.AdapterView.fireOnSelected(AdapterView.java:892) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.widget.AdapterView.access$200(AdapterView.java:49) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:860) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.os.Handler.handleCallback(Handler.java:615) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.os.Looper.loop(Looper.java:137) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at android.app.ActivityThread.main(ActivityThread.java:4898) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at java.lang.reflect.Method.invokeNative(Native Method) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at java.lang.reflect.Method.invoke(Method.java:511) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
11-05 10:50:37.000: E/AndroidRuntime(16763): at dalvik.system.NativeStart.main(Native Method) 
11-05 10:50:37.020: D/dalvikvm(16763): GC_CONCURRENT freed 243K, 7% free 12989K/13831K, paused 1ms+3ms, total 25ms 

我的代碼是:

public void setupAssetType(Boolean beenSet){ 
     Log.e("CamDebug", "Loading asset type"); 
      Cursor c = db.rawQuery("select * from AssetTypes", null); 
      Log.e("Error Tracking", "Loading AssetTypes"); 
      if(c.getCount() != 0) { 
      c.moveToFirst(); 
      final ArrayList<String> mAssetType = new ArrayList<String>(); 
      final ArrayList<String> mTypeID= new ArrayList<String>(); 


       c.moveToFirst(); 
       mAssetType.add("TEST"); 
       mTypeID.add("TEST"); 
       while(!c.isAfterLast()) { 
        mAssetType.add(c.getString(c.getColumnIndex("AssetType"))); 
        mTypeID.add(c.getString(c.getColumnIndex("AssetTypeID"))); 
        c.moveToNext(); 
       } 

       ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mAssetType); 
       spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spnAssetType.setAdapter(spinnerArrayAdapter); 
       int count = 0; 
       if(beenSet == true) { 
        for (String mID : mTypeID) { 

         Log.e("Set asset type", mID); 
         if(mID.equals(orAssetTypeID)){ 
          spnAssetType.setSelection(count); 
          Log.e("Set asset type FOUND", mID); 
          break; 
         } 
         count++; 
         } 
        } 
        c.close();    
       spnAssetType.setOnItemSelectedListener(new OnItemSelectedListener() { 

        @Override 
       public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
        Log.e("CamDebug", "Selected asset type"); 
         if(mAssetType.size() > 0){ 
          setupGroup(mTypeID.get(position), false); 
          AssetType = mTypeID.get(position); 
          updateLocalDesc(); 
          Log.e("Error Tracking", "Before Asset Type set"); 
          if(mTypeID.get(position) != null) { 
           AssetTypeID = mTypeID.get(position); 
           } else { 
            AssetTypeID = ""; 
           } 
          Log.e("Error Tracking", "After As"); 
         } 
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> parentView) { 

       } 

      }); 

      } 
    } 

正如你可以看到我已經加入:

mAssetType.add("TEST"); 
mTypeID.add("TEST"); 

來測試。但它不起作用。任何想法將不勝感激。

編輯:行461:AssetGroup = spnAssetGroup.getSelectedItem().toString();

EDIT 2 - 請不用說爲什麼不downvote。這不是生產什麼那麼

編輯3這似乎是個錯誤即將在此區塊包括像461和用於創建文本紡紗文字一行:

public void updateLocalDesc(){ 

    AssetType = spnAssetType.getSelectedItem().toString(); 
    AssetGroup = spnAssetGroup.getSelectedItem().toString(); 

    if(spnAssetSubGroup.getSelectedItem() != null && !spnAssetSubGroup.getSelectedItem().toString().equals("")){ 
     AssetSubGroup = spnAssetSubGroup.getSelectedItem().toString(); 
     tbLongDescription.setText(AssetType + "-" + AssetGroup + "-" + AssetSubGroup); 
    } else 
    { 
     tbLongDescription.setText(AssetType + "-" + AssetGroup); 
    } 

} 
+0

你的代碼中哪一行是第461行? –

+0

其中是方法updateLocalDesc()。什麼是Assets類中的第461行。 – jeet

+1

刪除兩個ArrayList的最後,並使兩個級別變量 –

回答

0

我解決了它。當我路過沒有到陣列,第二光標回來了爲0。因此,當它試圖爲說明區域中的文本,它是空,空的,所以這樣做:

public void updateLocalDesc(){ 

    if(spnAssetType.getSelectedItem() != null){ 
      AssetType = spnAssetType.getSelectedItem().toString(); 
    } else { 
     AssetType = " "; 
    } 

    if(spnAssetGroup.getSelectedItem() != null){ 
     AssetGroup = spnAssetGroup.getSelectedItem().toString(); 
    } else { 
     AssetGroup = " "; 
    } 
    AssetType = spnAssetType.getSelectedItem().toString();  


     if(spnAssetSubGroup.getSelectedItem() != null && !spnAssetSubGroup.getSelectedItem().toString().equals("")){ 
      AssetSubGroup = spnAssetSubGroup.getSelectedItem().toString(); 
      tbLongDescription.setText(AssetType + "-" + AssetGroup + "-" + AssetSubGroup); 
     } else 
     { 
      tbLongDescription.setText(AssetType + "-" + AssetGroup); 
     } 

} 

固定它

0

我猜線461

mAssetType.add(c.getString(c.getColumnIndex("AssetType"))); 

和空指針必須從

c.getString() 
現身

檢查android javadocs of cursor

如果找不到列c.getColumnIndex( 「AssetType」)將返回-1造成c.getString()拋出一個NullPointerException。

您應該將該行分成3行並進行調試以正確查找問題。

+0

當我將.add(「TEST」)取出時它工作正常 – TMB87

+0

@Tom如果它的工作良好,但是你找出原因了嗎?目前無法真正瞭解您提供代碼的方式。 –