2014-06-15 25 views
0

我有三项活动。我将一个对象从一个活动发送到第二个活动。我从第二个活动中检索数据,首先使用onActivityResult。然后我需要将检索到的数据发送到第三个活动,但我有一个例外。通过并从两个以上活动中检索参数

主要活动(问题是实现parcelable类,您可以在其他问题First question看到:

public class MainActivity extends Activity { 

Tgestion Tges= new Tgestion(); 
Button buttonI,buttonM,buttonB,buttonD,buttonS; 
static final int RECUPERAR_GESTOR = 1; 
static final int RECUPERAR_MODIFICAR=1; 


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

} 

public void addListenerOnButton() { 

    final Context context = this; 

    buttonI = (Button) findViewById(R.id.buttonIntroducir); 
    buttonI.setEnabled(true); 

    buttonI.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(context, IntroducirPatron.class); 
      intent.putExtra("com.example.sistemacontrasena.gestion", Tges); 
      //startActivity(intent); 
      startActivityForResult(intent, RECUPERAR_GESTOR); 

     } 

    }); 

    buttonM = (Button) findViewById(R.id.buttonModificar); 
    buttonM.setEnabled(false); 

    buttonM.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 


      Intent intent2 = new Intent(context, ModificarPatron.class); 
      intent2.putExtra("com.example.sistemacontrasena.mod", Tges); 
      startActivityForResult(intent2, RECUPERAR_MODIFICAR); 

     } 

    }); 


} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // Check which request we're responding to 
    if (requestCode == RECUPERAR_GESTOR) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
      this.Tges=data.getParcelableExtra("com.example.sistemacontrasena.result_gestion"); 


     } 
     if (resultCode == RESULT_CANCELED) { 
      //Write your code if there's no result 
     } 
    }    
} 
} 

在第二个活动,我把的setResult:

Intent returnIntent = new Intent(); 
    returnIntent.putExtra("com.example.sistemacontrasena.result_gestion", this.gestion); 
    setResult(RESULT_OK, returnIntent); 
    return maximo; 

直到这里的一切正确 在第三个我使用的活动中:

Tgestion gestion2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_modificar_patron); 
     this.gestion2=getIntent().getParcelableExtra("com.example.sistemacontrasena.mod"); 

} 

但是当我把问题2的功能,在第三个活动,例如:

String[] prueba= new String[2]; 
prueba=this.gestion2.getSecret(); 
System.out.println(prueba[0]) 

我有一个例外:

06-15 13:37:44.852: E/AndroidRuntime(32262): FATAL EXCEPTION: main 
06-15 13:37:44.852: E/AndroidRuntime(32262): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sistemacontrasena/com.example.sistemacontrasena.ModificarPatron}: java.lang.NullPointerException 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.os.Looper.loop(Looper.java:138) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.ActivityThread.main(ActivityThread.java:3701) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at java.lang.reflect.Method.invokeNative(Native Method) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at java.lang.reflect.Method.invoke(Method.java:507) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at dalvik.system.NativeStart.main(Native Method) 
06-15 13:37:44.852: E/AndroidRuntime(32262): Caused by: java.lang.NullPointerException 
06-15 13:37:44.852: E/AndroidRuntime(32262): at com.example.sistemacontrasena.ModificarPatron.onCreate(ModificarPatron.java:35) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-15 13:37:44.852: E/AndroidRuntime(32262): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 
06-15 13:37:44.852: E/AndroidRuntime(32262): ... 11 more 

我需要使用的信息从第二个活动第三检索通过主要活动的活动。

+1

指示线35 @'ModificarPatron' –

+0

对不起,我不明白我 – sandrita

回答

0

您在第3项活动中获得gestion2参考的nullpointerexception。 getParcelableExtra(“com.example.sistemacontrasena.mod”)中使用的密钥不包含任何值,因为您尚未将任何值分配给此密钥。

只要确保你使用的是检索来自已经值的键在调用活动意图分配一些值。

把正确的日志,以检查空值,如果任何参考/对象在其上调用任何方法为空。

+0

取代这个,但它不工作。是同样的问题。 – sandrita

+0

只要确保您用来从中检索值的键已经在调用活动意图中分配了一些值。 如果您正在调用任何方法的任何引用/对象为空,则放入适当的日志以检查空值。 – epiphany27

+0

我解决了。一个属性为null。非常感谢。 – sandrita

相关问题