2017-09-02 9 views
-1

私は2つのアクティビティを持っています。 MainActivityとScreen2。 MainActivityからEditViewで書かれたテキストを送信して、Screen2にボタンを押してそこのEditViewに表示したいと思います。次にScreen2のボタンを押すと、MainActivityに戻して連結メッセージを表示するには が必要です。しかし、私のアプリは閉じ続け、私にAndroidスタジオ2.3.3でstartActivityfoResultを使用するには?

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を助けてください:Mr.UMAR HUSSAINの回答後に修正、YET問題は同じままでした。質問のセクションを記入してください。

+0

を、あなたはログをチェックしましたか? –

+0

9月2日10:48:34.119 1598から1598/system_processのW/IInputConnectionWrapper:inexistent InputConnectionにreportFullscreenMode [09-02 10:48:34.123 1365:1365 I /] free_cache(3063)701313024 09-02役に立ちます10:48:57.358 2622-3201/com.google.android.gms I/FA-SVC:このインスタンスはアップローダとしてマークされています 09-02 10:49:12.861 2622-2632/com.google.android.gms W/SQLiteConnectionPool: –

+0

データベース '/data/user/0/com.google.android.gms/databases/networkstatistics.sqlite'のSQLiteConnectionオブジェクトがリークしました。進行中のトランザクションを正常に終了するようにアプリケーションを修正し、不要になった時点でデータベースを閉じるようにしてください。 –

答えて

1

最初のアクティビティでは、 "my_res"文字列を使用して画面2から送信しているときに、 "Result_Message"を使って文字列を受信して​​います。代わりに、Screen2にから変数を呼び出すのあなただけの解決のために、文字列中の変数名を入れて以下のコードを参照してください

あなた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

あなたは '' Result_Message ''を意味しますか?これは、変数名と文字列リテラルの両方として使用されているようです。 –

+0

はい回答を更新しました –

+0

申し訳ありません、onActivityResultのどこでMy_Resultを使用して文字列を受け取ったのかを教えてください。時間を取っていただきありがとうございます:) –

関連する問題