Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将单个字符串添加到数组的开头_Java_Android_Arrays - Fatal编程技术网

Java-将单个字符串添加到数组的开头

Java-将单个字符串添加到数组的开头,java,android,arrays,Java,Android,Arrays,这是一个android项目。我正在使用一个数组来构建一个微调器,它可以正常工作。但是,我现在尝试在数组的开头添加一条记录,以便在加载页面时不选择任何选项 我试图只使用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

这是一个android项目。我正在使用一个数组来构建一个微调器,它可以正常工作。但是,我现在尝试在数组的开头添加一条记录,以便在加载页面时不选择任何选项

我试图只使用
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) {

                }

            });

           }
    }
测试。但它不起作用。如有任何意见,将不胜感激

编辑:第461行是:
AssetGroup=spnAssetGroup.getSelectedItem().toString()

编辑2-请不要在没有说明原因的情况下否决投票。这是毫无成效的

编辑3这似乎就是错误所在。此块包括like 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);
   }

}

我猜第461行是

mAssetType.add(c.getString(c.getColumnIndex("AssetType")));
空指针必须来自

c.getString()
检查

如果找不到该列,c.getColumnIndex(“AssetType”)将返回-1,导致c.getString()抛出NullPointerException


您应该将该行分成3行,并对其进行调试,以准确地找到问题所在。

我已经解决了。当我不向数组传递任何内容时,第二个光标返回为0。因此,当它试图设置描述区域的文本时,它为null且为空,因此:

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);
       }

}

修复了代码中第461行是哪一行?方法updateLocalDesc()在哪里。资产类中的第461行是什么。删除ArrayList和make这两个类级别变量的final。我看不到您在代码中指出的
行461
。要么
spnAssetGroup
null
要么
spnAssetGroup。getSelectedItem()
返回
null
。(您的NPE被抛出
com.directinquiries.assessment.tool.AddAsset.updateLocalDesc(AddAsset.java:461)
中,您向我们展示了方法
setupAssetType
)@Tom如果工作正常,那很好,但您找到原因了吗?无法真正理解您现在给出代码的方式。
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);
       }

}