我的第二个活动是没有返回的第一个

我的第二个活动是没有返回的第一个

问题描述:

我试图让一个应用程序,其中MainActivity问结果从Main2Activity 代码MainActivity结果是:我的第二个活动是没有返回的第一个

package hello.option_menu; 

import android.app.Activity; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import com.ye.collor.stackapplication.R; 

public class MainActivity extends AppCompatActivity { 
    Button bt; 
    TextView tv; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button bt=(Button)findViewById(R.id.bt); 
     TextView tv=(TextView)findViewById(R.id.tv) ; 
     bt.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Intent i=new Intent(MainActivity.this,Main2Activity.class); 
       startActivityForResult(i,1); 
      } 
     }); 


    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode==1) 
     { 
      String message=data.getStringExtra("message"); 
      tv.setText(message); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.jai, menu); 

     return true; 
    } 

} 

Main2Activity代码:

package hello.option_menu; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

import com.ye.collor.stackapplication.R; 

public class Main2Activity extends AppCompatActivity { 
    Button bt; 
    EditText et; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main2); 
     bt=(Button)findViewById(R.id.button); 
     et=(EditText)findViewById(R.id.et); 
     bt.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View arg0) { 

       String message=et.getText().toString(); 
       Intent intent=new Intent(); 
       intent.putExtra("message",message); 
       setResult(1,intent); 
       finish(); 

      } 
     }); 
    } 
    public boolean onCreateOptionsMenu(Menu menu) { 

     menu.add("hello"); 

     MenuInflater inflater=getMenuInflater(); 
     inflater.inflate(R.menu.jai,menu); 

     return true; 
    } 

} 

所以我的应用程序的视图是:my MainActivity

my Main2Activity

所以,当我在Main2Activity键入文本设置写在MainActivity文本它没有这样做that.It后点击发送按钮仍然“世界你好”,这样的文字不会改变。我是无法麻烦解决这个问题。

+0

喜洁爵士,你可以检查我的答案。 – KeLiuyue

+0

检查我的答案,问题不是因为结果代码。 –

在你MainActivity2变化

setResult(1,intent); 

setResult(RESULT_OK,intent); 

你所试图做的是设置的RESULT_TYPE的硬编码值1,它是而你打算什么RESULT_FIRST_USER int值do被设置为RESULT_OK

另外,您假设的值1将为request = m = Ma inActivity2其实不是REQUEST_CODE而是RESULT_CODE。 requestCode保持在MainActivity中,可用于区分您打开的不同活动。你

也可以改变你的onActivityResult如下,以保持它更安全

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==1 && resultCode==RESULT_OK) 
    { 
     String message=data.getStringExtra("message"); 
     tv.setText(message); 
    } 
} 

更新1 另外你提到它在这之后崩溃,其因为你的TextView不是在MainActivity正确初始化。

所以在MainActivity变化

TextView tv=(TextView)findViewById(R.id.tv) ; 

tv=(TextView)findViewById(R.id.tv) ; 

,这样当你在OnActivityResult

+0

不工作先生,现在点击发送按钮应用程序停止 –

+0

如果它停止什么是错误日志说。它不能因为这个代码,但其他东西 –

+0

仍然不工作,按下发送按钮后文本不会改变 –

返回在Main2Activity试试这个,你宣布在全球范围内你的TextView被分配值。

String message = et.getText().toString(); 
    Intent intent = new Intent(Main2Activity.this, MainActivity.class); 
    intent.putExtra("message", message); 
    setResult(1, intent); 
    finish(); 

只要改变这个Intent intent = new Intent(Main2Activity.this, MainActivity.class);

添加在MainActivity

变化

Button bt=(Button)findViewById(R.id.bt); 
TextView tv=(TextView)findViewById(R.id.tv) 

bt=(Button)findViewById(R.id.bt); 
tv=(TextView)findViewById(R.id.tv) 

,并更改onActivityResult()方法

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1 || resultCode == 1) { 
     String message = data.getStringExtra("message"); 
     tv.setText(message); 
     Log.e("resultCode", resultCode + ""); 
     Log.e("message", message); 
    } 
} 
+0

我想这会帮助你。 – KeLiuyue

+0

所以先生它没有工作 –

+0

你可以有'Log.e(“消息”,消息);'在它里面。 – KeLiuyue