2017-03-17 6 views
0

Ich habe zwei Aktivitäten Hauptaktivität und Aktivität zwei, grundsätzlich versuche ich einen Text von Aktivität zwei an Hauptaktivität zu übergeben, wenn ich auf die Schaltfläche in Hauptaktivität aber immer abrufen null
jede Hilfe, warum es die Nachricht nicht zurückschickenWeitergabe von Daten aus einer untergeordneten Aktivität zur Hauptaktivität

der Hauptaktivitätscode ist:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button two = (Button) findViewById(R.id.button); 
     Recieve =(TextView) findViewById(R.id.textView2); 
     two.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       sendMessage(); 
      } 

     }); 
    } 

    public void sendMessage() { 
     Intent intent = new Intent(this, Activity2.class); 

     startActivityForResult(intent, REQUEST_CODE); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 


     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 

      String requiredValue = data.getStringExtra("Key"); 
      Recieve.setText(requiredValue); 

     } 
    } 

Und das ist Activity2 Code:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_2); 
     send(); 

    } 
    public void send(){ 
     String message ="hello"; 
     Intent intent = new Intent(); 
     intent.putExtra("key", message); 
     setResult(RESULT_OK, intent); 
     finish(); 
    } 
} 

Antwort

0

In send() verwenden Sie "key" mit einem Kleinbuchstaben k.

In onActivityResult() verwenden Sie "Key" mit einer Hauptstadt K.

Diese stimmen nicht überein, weshalb Sie keine Antwort erhalten.

Vielleicht sollten Sie Ihren Schlüssel an einer Stelle als Konstante definieren (final static) und in beiden Aktivitäten dieselbe konstante Definition verwenden.

+0

Die statische abschließende Zeichenfolge, die als Schlüssel verwendet wird, muss öffentlich sein, damit sie in mehreren Klassen (Aktivitäten) verwendet werden kann. Ich würde auch hinzufügen, dass es besser ist, es in der Aktivität zu setzen, die die Daten empfängt (hier MainActivity), damit andere Aktivitäten es konsistent verwenden können, ohne dass eine Drittparteiaktivität geladen werden muss, um die Antwort zu geben. – Feuby

+0

@Feuby: "muss öffentlich sein, um in mehreren Klassen verwendet zu werden" - nur wenn sie verschiedene Java-Pakete sind. Andernfalls ist das Paket privat ausreichend. – CommonsWare

+0

ja .it hat für mich geklappt Danke @CommonsWare –

Verwandte Themen