2017-09-02 68 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 :) –

相关问题