我正在尝试制作一个应用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;
}
}
<{1}}的代码是:
Main2Activity
所以我的应用视图是:my MainActivity
因此,当我在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;
}
}
中键入文本后点击发送按钮来设置Main2Activity
中写的文字时,它没有那样做。它仍然是“你好世界”,所以文字没有改变。我无法解决这个问题。
答案 0 :(得分:1)
在MainActivity2
更改
setResult(1,intent);
到
setResult(RESULT_OK,intent);
您要做的是将RESULT_TYPE
的硬编码值设置为1,这是RESULT_FIRST_USER
的int值,而您打算设置RESULT_OK
您假设的值1也是m = MainActivity2中的请求代码,实际上不是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 Change
中TextView tv=(TextView)findViewById(R.id.tv) ;
到
tv=(TextView)findViewById(R.id.tv) ;
以便在OnActivityResult
答案 1 :(得分:1)
在Main2Activity
。
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);
}
}