这个问题有很多成功的答案,但我仍然没有理解或者我做错了。一个答案是在主持人onActivityResult
中实施Activity
,但我想我不知道哪个是错误的,或者我错了。
不,我没有打电话给getActivity.startActivityForResult()
,只是startActivityForResult()
。
根据FirstActivity
中的选择,可以使用Fragments
创建一个或多个其他选项。一个Fragment
是ButtonFragment
,选中后会启动OptionsActivity
,如下所示:
public class ButtonFragment extends Fragment
{
.....
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode != Activity.RESULT_CANCELED)
{
if(requestCode == OPTIONS_REQUEST_CODE)
{
Bundle extras = data.getExtras();
if (extras != null) {
String selection = (String) extras.get("optionsSelection");
data.setText(selection);
}
}
}
}
private void openOptionsActivity()
{
Intent intent = new Intent(getActivity(), OptionsActivity.class);
intent.putExtra("optionsArray", options);
startActivityForResult(intent, OPTIONS_REQUEST_CODE);
}
}
此片段已添加到BaseActivity
:
public class BaseActivity extends FragmentActivity
{
.....
fm.beginTransaction().add(
R.id.FragmentContainer, frag).commitAllowingStateLoss();
fm.executePendingTransactions();
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
finish();
}
}
内部OptionsActivity
:
public class OptionsActivity extends BaseSpinnerActivity
{
.....
private class OptionsAdapter extends BaseSpinnerAdapter
{
public OptionsAdapter(Context context, Object[] values)
{
super(context, values);
}
protected void fillRow(ViewHolder holder, int position)
{
String option = options[position];
if(option != null) {
holder.text.setText(option);
}
}
protected void onRowSelect(View v)
{
Intent returnIntent = new Intent();
String optionSelection = (String)v.getTag();
returnIntent.putExtra("optionSelected", optionSelection);
setResult(RESULT_OK, returnIntent);
finish();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
finish();
}
}
同样的事情在BaseSpinnerActivity
内完成,从ListActivity
延伸。 (我知道,应该使用FragmentActivity
,但我还没有机会转换它。)
这些onActivityResult()
都没有被调用。
我错过了什么或做错了什么?任何帮助表示赞赏!