我的主要活动是使用startActivityForResult方法,该方法调用一个我需要从中返回两个字符串值的活动。我有它的工作返回一个,但即使有所有的教程和其他问题在这里,我已经读过我似乎无法让它返回两个值。以下是我的代码。
这是我开始第二项活动的地方:
Button button = (Button) findViewById(R.id.add);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(addM, 1);
}
});
这是它开始的活动,我需要返回titleField(现在可以使用)和yearField
中的文本public class AddMovie extends Activity {
String movieTitle, movieYear;
EditText titleField, yearField;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_movie);
titleField = (EditText) findViewById(R.id.titleField);
yearField = (EditText) findViewById(R.id.yearField);
save = (Button) findViewById(R.id.saveMovie);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data = new Intent();
data.setData(Uri.parse(titleField.getText().toString()));
setResult(RESULT_OK, data);
//data.setData(Uri.parse(yearField.getText().toString()));
//setResult(RESULT_OK, data);
finish();
}
});
}
}
这是我的主类中接收结果的方法
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == request_Code)
{
if(resultCode == RESULT_OK)
{
tempTitle = data.getData().toString();
//tempYear = data.getStringExtra("movieYear");
Toast.makeText(this, tempTitle, Toast.LENGTH_SHORT).show();
dbAddMovie(tempTitle, tempYear);
}
}
}
注释掉的代码是尝试接收多个值的尝试,尽管它们失败了。对这种情况的任何帮助都会很棒。谢谢!
答案 0 :(得分:7)
你应该使用类似的东西:
Intent returnIntent = new Intent();
returnIntent.putExtra("title",titleField.getText().toString());
returnIntent.putExtra("year",yearField.getText().toString());
setResult(RESULT_OK,returnIntent);
finish();
在您的主要活动上,onActivityResult:
tempTitle = data.getStringExtra("title");
tempYear = data.getStringExtra("year");
答案 1 :(得分:1)
使用data.putExtra("keys", data);
代替data.setData(.....)
并获得像;
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
String value = extras.getString("keyName");
}
答案 2 :(得分:1)
您应该可以为您的意图添加额外内容并通过相关标记获取该数据。这就是我从Activity的onCreate中做到的。
Intent mIntent = new Intent(this, MainActivity.class);
mIntent.putExtra("your_tag", "the string you want to get");
startActivity(mIntent);
finish();
然后在活动中你想要那些数据(MainActivity或你正在调用它的任何东西)....
Intent intent = getIntent();
String value = intent.getExtras().getString("your_tag");
值得注意的是,您可以覆盖MainActivity中的onNewIntent来处理新的Intent,我目前看起来像......
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
}
答案 3 :(得分:0)
您可以在putExtra
上使用Intent
方法:
data.putExtra("title", movieTitle);
data.putExtra("year", movieYear);
然后在打开的Activity中,您可以按如下方式获取此数据:
String title, year;
Intent data = getIntent();
if (data != null) {
title = data.getExtras().getString("title");
year = data.getExtras().getString("year");
}
答案 4 :(得分:0)
您可以创建新的意图,然后添加两个变量
Intent i = new Intent(getApplicationContext(), asd8.as.hwapp.timemonday.class);
i.putExtra("username",username);
i.putExtra("password", password);
startActivity(i);
然后检索新活动中的信息;
public void getInformation(){
Bundle extras = getIntent().getExtras();
if (extras != null) {
username = extras.getString("username");
password = extras.getString("password");
}
}
答案 5 :(得分:0)
试试这个
public class AddMovie extends Activity {
String movieTitle, movieYear;
EditText titleField, yearField;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_movie);
titleField = (EditText) findViewById(R.id.titleField);
yearField = (EditText) findViewById(R.id.yearField);
save = (Button) findViewById(R.id.saveMovie);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data = new Intent();
data.putExtra("title_field", titleField.getText().toString);
data.putExtra("year_field", yearField.getText().toString);
setResult(RESULT_OK, data);
finish();
}
});
}
这个
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == request_Code)
{
if(resultCode == RESULT_OK)
{
tempTitle = data.getStringExtra("title_field");
tempYear = data.getStringExtra("year_field");
Toast.makeText(this, tempTitle, Toast.LENGTH_SHORT).show();
dbAddMovie(tempTitle, tempYear);
}
}
}