2013-08-02 1 views
1

그래서 활동을 시작한 인 텐트에서 번들을 검색하려는 시도에서 널 포인터 예외가 발생합니다.브레인 데드 모멘트 : 안드로이드 인 텐트에서 번들 전달

이전 활동의 코드는 다음과 같습니다

Bundle b = new Bundle(); 
Intent that = new Intent(this, GoogleMapSearchActivity.class); 
that.putExtra("bundle", b); 
startActivity(that); 

호출 된 활동과 함께 번들 찾기 위해 시도 : 다음

Bundle bund; 
Intent activity = getIntent(); 
bund = activity.getBundleExtra("bundle"); 

를 a로 다음 마지막 줄 가리키는 널 포인터 예외, 내 얼굴에 매우 벙어리 표현과 내 마음에 좌절감.

08-02 01:32:43.249: E/AndroidRuntime(2162): FATAL EXCEPTION: main 
08-02 01:32:43.249: E/AndroidRuntime(2162): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.donatorproj/com.example.donatorproj.GoogleMapSearchActivity}: java.lang.NullPointerException 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.os.Looper.loop(Looper.java:137) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at dalvik.system.NativeStart.main(Native Method) 
08-02 01:32:43.249: E/AndroidRuntime(2162): Caused by: java.lang.NullPointerException 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at com.example.donatorproj.GoogleMapSearchActivity.addInitialDataMarkers(GoogleMapSearchActivity.java:85) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at com.example.donatorproj.GoogleMapSearchActivity.onCreate(GoogleMapSearchActivity.java:78) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.Activity.performCreate(Activity.java:5104) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
08-02 01:32:43.249: E/AndroidRuntime(2162):  ... 11 more 
+0

스택 추적을 게시 할 수 있습니까? –

+0

잘 모르겠지만 인 텐트를 호출하는 중에'Intent that = new Intent (YourCurrentActivityname. this, GoogleMapSearchActivity.class); '를 시도해보십시오. –

답변

0

이 해냈어 :

Bundle b = new Bundle(); 
Intent that = new Intent(this, GoogleMapSearchActivity.class); 
that.putExtras(b); // formerly that.putExtra("bundle", b); 
startActivity(that); 

Bundle bund; 
Intent activity = getIntent(); 
bund = activity.getExtras(); // fomerly bund = activity.getBundleExtra("bundle"); 

그럼 내 문제는 간단히 대신 putExtra의 putExtras의 방법 키 이름과 getBundleExtra에 대한 호출을 사용하여 멀리 갔다. 나는 정말로 그것이 내가하지 않았던 첫번째 길인 이유를 정말로 해석하지 않는다.

0

아마도 번들이 비어 있기 때문일 수 있습니다. hasExtra("bundle")을 사용하여 번들이 있는지 확인하십시오.

+0

if 문 수행 : if (activity.hasExtra ("bundle")); 이제 if 문에서 널 포인터를 얻는다. – user2097211

0

개별 매개 변수를 나열하는 것과 같습니다 (예 :

Intent intent = new Intent (SomeActivity.this, AnotherActivity.class); 
    intent.putExtra("paramName1", theString); 
    intent.putExtra("paramName2", "anotherString"); 
    startActivity(intent); 

다음, 시작 활동에, 당신의 인수

Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     variable1 = extras.getString("paramName1"); 
     variable2 = extras.getString("paramName2"); 
    } 

하나는 통과, 또는 전체 번들이 문제에 빛을 흘릴 수 라인 78 This SO post에서 볼 null 값을 포함해야합니다. 희망이 도움이됩니다. 사용 번들의

2

절차 : 의도에 대한

번들 :

Intent mIntent = new Intent(this, A.class); 

Bundle extras = mIntent.getExtras(); 

extras.putString(key, value); 

만들기 번들

Intent intent = new Intent(this, A.class); 

Bundle mBundle = new Bundle(); 

mBundle.extras.putString(key, value); 

intent.putExtras(mBundle); 

PutExtra 방법은 시작 활동에서, 그리고

Intent intent = new Intent(this, A.class); 

intent.putExtra(key, value); 

을 사용 , 당신은을 통해 읽을 것입니다 :

String values = getIntent().getExtras().getString(key) 
관련 문제