当我从另一个活动回调时,为什么onActivityResult不起作用

时间:2013-05-23 12:51:36

标签: android android-intent android-activity fragment

这是我第一次在国外网站上提问。我知道这里有很多大师。希望有人能帮帮我。谢谢。以下是我的问题: 首先,我在一个活动中使用ActionBar创建选项卡。

bar.addTab(bar.newTab()
            .setText("支出")
            .setTabListener(new TabListener<ExpensesActivity.ExpensesFragment>(
                    this, "支出", ExpensesActivity.ExpensesFragment.class)));

其次,在ExpensesActivity中,我使用意图转到另一个活动

public class ExpensesActivity extends Activity {

private static TextView mDateDisplay;
private static final String TAG = "ExpensesActivity";


@Override
protected void onResume() {
    super.onResume();
    setContentView(R.layout.activity_expenses);
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    FragmentManager fm = getFragmentManager();
    // Create the list fragment and add it as our sole content.
    if (fm.findFragmentById(android.R.id.content) == null) {
        ExpensesFragment list = new ExpensesFragment();
        fm.beginTransaction().add(android.R.id.content, list).commit();
    }
}

/**
 * 从子activity返回回来保存的数据 
 */
@Override
public void onActivityResult(int requestCode, int resultCode,
        Intent data){

    FragmentManager fm = getFragmentManager();
    ExpensesFragment frag = (ExpensesFragment)fm.findFragmentByTag("支出");
    fm.beginTransaction().add(android.R.id.content, frag).commit();
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case 0:
            Bundle bundle = data.getExtras();
            String result = bundle.getString("result");
            break;

        default:
            break;
    }
}
public static class ExpensesFragment extends Fragment{

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);
        //先得到Fragment所依附的Activity
        EditText amountEdit = (EditText)getActivity().findViewById(R.id.amount_text2);
        //选择类别
        Button category = (Button)getActivity().findViewById(R.id.category_button); 
        category.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent categoryIntent = new Intent(getActivity(),CategoryActivity.class);
                getActivity().startActivityForResult(categoryIntent,0);
            }
        });

    }


    /**
     * 当前fragment的UI
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        return inflater.inflate(R.layout.activity_expenses, container,false);
    }

}

}

第三,在CategoryActivity中我保存了一些数据。

public class CategoryActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Intent intent = new Intent(CategoryActivity.this,ExpensesActivity.class);
    intent.putExtra("result", "我是子activity的数据");
    setResult(RESULT_OK,intent);
    finish();
}

}

最后,当我调用onActivityResult方法时,我希望在ExpensesActivity中接收数据。 当我在onActivityResult方法中调试时,它永远不会工作

1 个答案:

答案 0 :(得分:0)

您好在CategoryActivity类中使用它

 Intent _intent = new Intent();
    setResult(0, _intent);
    finish();

我认为这会对你有所帮助。