2017-10-28 5 views
-2

며칠 동안이 문제를 조사해 본 결과 내 문제와 관련된 스레드를 찾을 수없는 것 같습니다. 내 번들에 문자열을 추가하려고 할 때마다 내 앱이 중단됩니다. extras.putString (EXTRA_MESSAGE, message)에서 오류가 발생합니다.MainActivity에서 인 텐트 만들기를 처리하는 동안 NullPointerException이 발생했습니다.

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: lss.mybbofflinever3, PID: 8181 
java.lang.IllegalStateException: Could not execute method for android:onClick 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
at android.view.View.performClick(View.java:5702) 
at android.widget.TextView.performClick(TextView.java:10896) 
at android.view.View$PerformClick.run(View.java:22546) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7224) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invoke(Native Method) 
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
at android.view.View.performClick(View.java:5702)  
at android.widget.TextView.performClick(TextView.java:10896)  
at android.view.View$PerformClick.run(View.java:22546)  
at android.os.Handler.handleCallback(Handler.java:739)  
at android.os.Handler.dispatchMessage(Handler.java:95)  
at android.os.Looper.loop(Looper.java:158)  
at android.app.ActivityThread.main(ActivityThread.java:7224)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.putString(java.lang.String, java.lang.String)' on a null object reference 
at lss.mywebsiteoffline.MainActivity.sendMessage(MainActivity.java:59) 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    private ArrayList<String> priceGroupSpinnerItems; 
    public static final String EXTRA_MESSAGE = "lss.mywebsiteoffline.MESSAGE"; 
    public String message = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Spinner spnPriceGroup = (Spinner) findViewById(R.id.price_group_spinner); 

     ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.list_price_group, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spnPriceGroup.setAdapter(adapter); 

     message = spnPriceGroup.getSelectedItem().toString(); 
    } 

    /** Called when the user taps the Go button */ 
    public void sendMessage(View view) { 

     Intent mIntent; 

     mIntent = new Intent(this, nextActivity.class); 
     Bundle extras = mIntent.getExtras(); 
     extras.putString(EXTRA_MESSAGE, message); 
     mIntent.putExtras(extras); 
     startActivity(mIntent); 

    } 
} 

로그 캣 난 그냥 의도, 또는 번들을 사용하는 예제를 시도하고, putString에 직접 문자열을 추가했다. 나는 뻔뻔스럽게 명백한 것을 놓치고 있을지도 모른다. 문자열을 putString 메서드에 직접 추가하고 동일한 오류가 발생한 후에 내가 무엇을 찾고 있는지 확신 할 수 없습니다.

+0

'extras'가 될 수'null'을, 당신이 그것을 확인 했습니까? – alfasin

+0

@alfasin : 이미 몇 번 그 기사를 읽었습니다. 그것은 분명하지 않았다 (적어도 나에게). 그러나 laalto의 대답은 나의 문제를 해결하는 것처럼 보였다. 그 기사가 나를 똑같은 대답으로 인도했을 지 확신하지 못했습니다 .. –

답변

1

기본적으로 Intent에는 추가 항목이없고 getExtras()은 null을 반환합니다. 추가 기능을 설정하려면 추가 기능 번들을 직접 만들어야합니다.

Bundle extras = new Bundle(); 

Bundle extras = mIntent.getExtras(); 

교체 또는 단지 IntentputExtra() 오버로드 중 하나를 호출 - 그것은 이미 아니라 엑스트라 경우 번들 또한 init을 것입니다.

+0

이것은 그것을 고쳐줍니다. 나는 내 코드가 섞여 있어야만한다! @laalto 감사합니다! –

0

이 시도 :

Intent mIntent = new Intent(this, nextActivity.class); 
mIntent.putExtra(EXTRA_MESSAGE, message); 
startActivity(mIntent);