2017-01-09 59 views
0

我遇到此錯誤:當我按下按鈕時,它將轉到具有數組的活動。在添加數組之前,它很好。在添加數組後,應用程序崩潰。嘗試調用空對象錯誤

public class navigation_front extends AppCompatActivity { 
    Button scan_btn; 
    Spinner dest; 
    EditText Edit_current; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(navigation_front); 
     scan_btn = (Button) findViewById(R.id.scan_btn); 
     final Activity activity = this; 
     scan_btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       IntentIntegrator integrator = new IntentIntegrator(activity); 
       integrator.setDesiredBarcodeFormats(IntentIntegrator.PRODUCT_CODE_TYPES); 
       integrator.setPrompt("Scan"); 
       integrator.setCameraId(0); 
       integrator.setBeepEnabled(false); 
       integrator.setBarcodeImageEnabled(false); 
       integrator.initiateScan(); 

      } 
     }); 
     dest = (Spinner) findViewById(R.id.edit_destination); 
     String edit_destination = dest.getSelectedItem().toString().trim(); 
     final ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.destination_array, R.layout.support_simple_spinner_dropdown_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dest.setAdapter(adapter); 
     dest.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       String type = parent.getItemAtPosition(position).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
     if(result.getContents() != null){ 
      if(result.getContents() == null) { 
       Log.d("MainActivity", "Cancelled scan"); 
       Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
      } else { 
       EditText editText =(EditText)findViewById(R.id.Edit_current); 
       editText.setText("" + result.getContents(), TextView.BufferType.EDITABLE); 
      } 

     } 

以下是錯誤日誌:

FATAL EXCEPTION: main 
        Process: com.sp.ez_mart, PID: 15263 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sp.ez_mart/com.sp.ez_mart.navigation_front}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2726) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787) 
         at android.app.ActivityThread.-wrap12(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:154) 
         at android.app.ActivityThread.main(ActivityThread.java:6247) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762) 
        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference 
         at com.sp.ez_mart.navigation_front.onCreate(navigation_front.java:54) 
         at android.app.Activity.performCreate(Activity.java:6754) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2679) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2787)  
         at android.app.ActivityThread.-wrap12(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:154)  
         at android.app.ActivityThread.main(ActivityThread.java:6247)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)  
         at 

com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

+1

得到Spinner使用position和數據源被傳遞到ArrayAdapter構造選擇的項目'R.array.destination_array'數組獲取選定的項目? –

+1

能否詳細說明一下新的java – Jason

回答

0

大概

String type = parent.getItemAtPosition(position).toString(); 

線路引起問題,因爲parent.getItemAtPosition(position)返回null

@Override 
public void onItemSelected(AdapterView<?> parent,View view,int position,long id) { 
    // get Array from xml 
    String [] dataArray = getResources().getStringArray(R.array.destination_array); 
    String type = dataArray[position]; 
} 
0

與@解決它ρяσѕρєяK線加爲什麼不使用,並刪除了一些行

public class navigation_front extends AppCompatActivity { 
    Button scan_btn; 
    Spinner dest; 
    EditText Edit_current; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(navigation_front); 
     scan_btn = (Button) findViewById(R.id.scan_btn); 
     final Activity activity = this; 
     scan_btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       IntentIntegrator integrator = new IntentIntegrator(activity); 
       integrator.setDesiredBarcodeFormats(IntentIntegrator.PRODUCT_CODE_TYPES); 
       integrator.setPrompt("Scan"); 
       integrator.setCameraId(0); 
       integrator.setBeepEnabled(false); 
       integrator.setBarcodeImageEnabled(false); 
       integrator.initiateScan(); 

      } 
     }); 
     dest = (Spinner) findViewById(R.id.edit_destination); 
     final ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.destination_array, R.layout.support_simple_spinner_dropdown_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dest.setAdapter(adapter); 
     dest.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       String [] dataArray = getResources().getStringArray(R.array.destination_array); 
       String type = dataArray[position];} 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
     if(result.getContents() != null){ 
      if(result.getContents() == null) { 
       Log.d("MainActivity", "Cancelled scan"); 
       Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); 
      } else { 
       EditText editText =(EditText)findViewById(R.id.Edit_current); 
       editText.setText("" + result.getContents(), TextView.BufferType.EDITABLE); 
      } 

     } 


    } 
} 
相關問題