我的第二个活动是没有返回的第一个
我试图让一个应用程序,其中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
所以,当我在Main2Activity
键入文本设置写在MainActivity
文本它没有这样做that.It后点击发送按钮仍然“世界你好”,这样的文字不会改变。我是无法麻烦解决这个问题。
在你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
不工作先生,现在点击发送按钮应用程序停止 –
如果它停止什么是错误日志说。它不能因为这个代码,但其他东西 –
仍然不工作,按下发送按钮后文本不会改变 –
返回在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);
}
}
喜洁爵士,你可以检查我的答案。 – KeLiuyue
检查我的答案,问题不是因为结果代码。 –