2017-09-02 139 views
-1

我有2項活動。 MainActivity和Screen2。我想從MainActivity發送一個寫在EditView中的文本,按下按鈕到Screen2,在EditView上顯示它。然後按Screen2上的按鈕,它需要 將其返回到MainActivity並顯示連接的消息。但是我的應用程序保持關閉,請幫助我如何在Android studio 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(); 
      } 
     }); 

    } 
} 

編輯:已得到糾正後Mr.UMAR侯賽因的問題,但是問題仍然是相同的。我在問題部分添加了日誌請檢查該問題

+0

你檢查日誌? –

+0

09-02 10:48:34.119 1598年至1598年/ system_process W/IInputConnectionWrapper:reportFullscreenMode上不存在InputConnection [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

在onActivityResult中,當您使用「my_res」字符串從屏幕2發送時,您正在使用「Result_Message」作爲stirng接收字符串。而不是調用從畫面2變量,你只要把變量名字符串的解決方案見下面的代碼

在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?感謝您花時間btw :) –

相關問題