2017-01-09 3 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

Почему не используется 'R.array.destination_array' Массив для получения выбранного элемента? –

+1

Вы могли бы разработать более cos im new для java – Jason

ответ

0

Возможно

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

вызвав проблему, потому что parent.getItemAtPosition(position) возвращение null.

Получить выбранный элемент из Spinner с помощью position и источника данных, который передается в ArrayAdapter конструктор:

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

     } 


    } 
} 
Смежные вопросы

 Смежные вопросы