2017-09-02 2 views
-1

Ich habe 2 Aktivitäten. MainActivity und Screen2. Ich möchte einen Text, der in der EditView von MainActivity geschrieben wurde, senden, indem ich den Button zu Screen2 drücke, um ihn dort auf der EditView anzuzeigen. Wenn Sie dann die Schaltfläche auf Bildschirm2 drücken, müssen Sie eingeben, um es an MainActivity zurückzugeben und eine verkettete Nachricht anzuzeigen. Aber meine App hält Schließung, bitte hilf mirWie startActivityfoResult in Android Studio 2.3.3 zu verwenden?

package com.example.car.cerdo; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 
    String msg; 
    public static final String Extra_Message = "myFirst"; 
    static final int Main_requestCode=1; 
    TextView t = (TextView) findViewById(R.id.t1); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button b = (Button) findViewById(R.id.b1); 

     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent myIntent = new Intent(MainActivity.this, Screen2.class); 

       msg = t.getText().toString(); 
       myIntent.putExtra(Extra_Message, msg); 
       startActivityForResult(myIntent,Main_requestCode); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode==Main_requestCode) 
     { 
      String msg= data.getStringExtra(Screen2.Result_Message); 
      t.setText(msg); 
     } 
    } 
} 
package com.example.car.cerdo; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 

public class Screen2 extends AppCompatActivity { 
    String msg; 
    public static final String Result_Message="my_Res"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_screen2); 

     Intent i=getIntent(); 
     msg=i.getStringExtra(MainActivity.Extra_Message); 
     TextView t= (TextView)findViewById(R.id.t2); 

     t.setText(msg); 
     Button b=(Button)findViewById(R.id.b2); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent resultIntent= new Intent(); 
       resultIntent.putExtra(Result_Message, msg+" this is new"); 
       setResult(RESULT_OK,resultIntent);// REsultcode 
       finish(); 
      } 
     }); 

    } 
} 

EDIT: WURDE KORRIGIERT NACH Mr.UMAR HUSSAIN Antwort, das Problem noch bleibt gleich. Ich habe das Protokoll unter dem Kommentar Abschnitt der Frage hinzugefügt BITTE PRÜFEN, dass auch

+0

Haben Sie die Protokolle überprüfen? –

+0

09-02 10: 48: 34,119 1598-1598/system_process W/IInputConnectionWrapper: reportFullscreenMode auf inexistent InputConnection [09-02 10: 48: 34,123 1365: 1365 I /] free_cache (3063) Gebrauch machen 701.313.024 09-02 10: 48: 57.358 2622-3201/com.google.android.gms I/FA-SVC: Diese Instanz wird als Uploader markiert 09-02 10: 49: 12.861 2622-2632/com.google.android.gms W/SQLiteConnectionPool: –

+0

Ein SQLiteConnection-Objekt für die Datenbank '/data/user/0/com.google.android.gms/databases/networkstatistics.sqlite' wurde durchgesickert! Bitte reparieren Sie Ihre Anwendung, um die laufenden Transaktionen ordnungsgemäß zu beenden und die Datenbank zu schließen, wenn sie nicht mehr benötigt wird. –

Antwort

1

In der ersten Aktivität in onActivityResult erhalten Sie Zeichenfolge mit "Result_Message" als Steigern, während Sie von Bildschirm zwei mit "my_res" Zeichenfolge senden. statt Aufruf Variable von Screen2 nur Sie den Variablennamen in String für Lösung setzen den Code unten sehen

Tun Sie dies in Ihrem MainActivity.java:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==Main_requestCode) { 
     String msg= data.getStringExtra(Screen2.Result_Message); 
     t.setText(msg); 
    } 
} 
+1

Meinst du '" Result_Message "'? Dies scheint sowohl als Variablenname als auch als String-Literal verwendet zu werden. –

+0

Ja Ich habe meine Antwort aktualisiert –

+0

Es tut mir leid, bitte erklären Sie, wo on onActivityResult habe ich die Zeichenfolge mit My_Result erhalten? Danke, dass du dir Zeit genommen hast :) –

Verwandte Themen