在Fragment外部使用GUI部件时的OnActivityResult

时间:2014-05-26 20:43:38

标签: android user-interface android-fragments onactivityresult

我有一个双窗格片段设计,细节片段处理最左边的listfragment点击的项目。

由于我有许多不同的列表项,因此每个列表项都有不同的GUI,我想将GUI部分的处理放在不同的单独的类中。 我使用反射来获取ItemDetailFragment中的代码:(下面的代码被删除)

*//get class gui_handler for the object and get its constructor:*
Constructor<?> ctor = mListItem.getmGuiHandler().getConstructor(View.class);

*//create an object of the gui_handler class, pass the rootView as arg:*
gui_handler_base handlerObject = (gui_handler_base) ctor.newInstance(root);

*//run setup-method containing findViewById() and more GUI related stuff:*
handlerObject.setupGUI(mListItem, getActivity());

在setupGUI中:

public void setupGUI(MyListItem item, final Activity activity) {
  buttonRun.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v) {
                final String FILENAME = "XXX";
                Intent I = new Intent(activity,KTActivity.class);
                Bundle b = new Bundle();
                b.putSerializable("FileName",FILENAME);
                I.putExtras(b);
                activity.startActivityForResult(I,1);
                return;
            }
        });

@Override
public void onActivityResult(int requestCode, int resultCode,
            Intent data) {
// I WANT TO END UP HERE WHEN THE ACTIVITY RETURNS;
}

我在gui_handler_base类中有一个onActivityResult方法,在ItemDetailFragment中有一个onActivityResult方法,但没有一个被调用。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

你的问题很模糊。你为什么使用onActivityResult? activity.startActivityForResult(I,1);为什么?为什么不只是在片段类中实现onclicklistener类并完成它?似乎在尝试减少代码时,您为自己创造了更多麻烦。还要在代码中取出数字并使用常量。您必须调用intent并在同一片段中使用intent。还有更多为什么要从片段中提取GUI功能?你不应该。即使您正在创建自定义功能,您仍然可以在片段中处理片段的功能。

  //if you want to try this… normally when receiving a camera intent this is what you can do. 
  if (resultCode == Activity.RESULT_OK) {
        switch (requestCode) {
        case yourResultCode:
        doSomethingWithYourResult;
        break;
      ]