2017-08-17 43 views
-2

假設我有3個活動,第一個是MainActivity,第二個是PopUp,第三個是SearchCategory。StartActivityforResult崩潰

我想要做的是,我將開始這項活動,彈出窗口有一個按鈕。現在當我點擊這個按鈕時,我希望它把它作爲一個字符串存儲起來,並將它作爲一個Intent傳遞,所以我可以用它來爲MainActivity比較它的東西。

這適用於我的SearchCategory類。

我得到的問題是,當我單擊PopUp類中的按鈕時,它會崩潰。

我MainActivity的onActivityResult的代碼:

public void search(View view) { 

     category = (MaterialBetterSpinner)findViewById(R.id.spinner_category); 
     category_string = category.getText().toString(); 

     route = (MaterialBetterSpinner)findViewById(R.id.spinner_routes); 
     route_string = route.getText().toString(); 

     Intent intent = new Intent(); 
     Bundle bundle = new Bundle(); 
     bundle.putString("start", category_string); 
     bundle.putString("route", route_string); 
     intent.putExtras(bundle); 
     setResult(RESULT_OK, intent); 

     finish(); 

    } 

我彈出類的代碼:

package rjj.manilapuvtravelcompanion; 


import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 
import android.util.DisplayMetrics; 
import android.view.View; 
import android.widget.TextView; 

import org.w3c.dom.Text; 

/** 
* Created by Julian on 8/5/2017. 
*/ 

public class PopUp extends AppCompatActivity { 
    String route, start = "1"; 
    TextView textView2; 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.pop_layout); 

     DisplayMetrics dm = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(dm); 

     int width = dm.widthPixels; 
     int height = dm.heightPixels; 

     getWindow().setLayout((int)(width*.8),(int)(height*.5)); 
     route = getIntent().getExtras().getString("route"); 

     //Checks if I retrieved the intent correctly 
     if (route.equals("Sample Route")){ 
      textView2 = (TextView)findViewById(R.id.textView2); 
      textView2.setText("Nice"); 
     } 
    } 

    public void getRoute(View view) { 
     if (route.equals("Sample Route")){ 
      Intent intent = new Intent(); 
      Bundle bundle = new Bundle(); 
      intent.putExtra("start", start); 
      intent.putExtra("route", route); 
      intent.putExtras(bundle); 
      setResult(RESULT_OK, intent); 

      finish(); 
     } 
    } 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == RESULT_OK) { 

      Bundle searchCategory = data.getExtras(); 
      if (start.equals("1")){ 
       route = searchCategory.getString("route"); 
      }else { 
       start = searchCategory.getString("start"); 
       route = searchCategory.getString("route"); 
      } 
      ... 
     } 

我SearchCategory類的按鈕的代碼是我點擊按鈕後得到的錯誤:

08-18 00:08:47.221 2807-2813/? E/jdwp: Failed writing handshake bytes: Broken pipe (-1 of 14) 
08-18 00:08:50.341 2807-2807/rjj.manilapuvtravelcompanion E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 
08-18 00:08:50.821 2807-2807/rjj.manilapuvtravelcompanion E/dalvikvm: Could not find class 'com.google.android.chimera.Activity', referenced from method jx.b 
08-18 00:08:58.441 2807-2807/rjj.manilapuvtravelcompanion E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: rjj.manilapuvtravelcompanion, PID: 2807 
                      java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {rjj.manilapuvtravelcompanion/rjj.manilapuvtravelcompanion.MainActivity}: java.lang.NullPointerException 
                       at android.app.ActivityThread.deliverResults(ActivityThread.java:3365) 
                       at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408) 
                       at android.app.ActivityThread.access$1300(ActivityThread.java:135) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:136) 
                       at android.app.ActivityThread.main(ActivityThread.java:5017) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:515) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.NullPointerException 
                       at rjj.manilapuvtravelcompanion.MainActivity.onActivityResult(MainActivity.java:131) 
                       at android.app.Activity.dispatchActivityResult(Activity.java:5423) 
                       at android.app.ActivityThread.deliverResults(ActivityThread.java:3361) 
                       at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408)  
                       at android.app.ActivityThread.access$1300(ActivityThread.java:135)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)  
                       at android.os.Handler.dispatchMessage(Handler.java:102)  
                       at android.os.Looper.loop(Looper.java:136)  
                       at android.app.ActivityThread.main(ActivityThread.java:5017)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:515)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
                       at dalvik.system.NativeStart.main(Native Method)  

編輯︰現在都崩潰。 SearchCategory以前工作正常! :(

+0

MainActivity中的第131行是什麼?它是'if(start.equals(「1」))'行嗎?如果是這種情況,MainActivity中最初分配的開始位置是哪裏?我只看到它被分配到你的PopUp活動中 – shiv

回答

0

看起來像我回答我的問題,但我真的不知道爲什麼。還好我總是複製嘗試新的東西之前,我粘貼整個代碼。

我認爲有些事情是錯的我的代碼在調用ActivityforResult因爲這是我改變了很多。

對不起,我是無法發佈這兩個關鍵代碼。我甚至不能重做的某些原因。

但我認爲這是像這個:

爲彈出式活動的代碼:

Intent intent = new Intent(MainActivity.this, PopUp.class); 
     intent.putExtra("route", tag); 
     startActivityForResult(intent, 1); 

,爲SearchCategoryActivity代碼:

Intent i = new Intent(MainActivity.this, SearchCategory.class); 
      startActivityForResult(i, 0); 

而我所做的溶液我改變了的onClick調用彈出的活動來:

Intent i = new Intent(MainActivity.this, PopUp.class); 
      i.putExtra("route", tag); 
      startActivityForResult(i, 0); 

剛剛基本上覆制了一個在調用SearchCategory並添加以下行:

i.putExtra("route", tag);