【问题标题】:How to return "result" from one class to a defined class?如何将“结果”从一个类返回到定义的类?
【发布时间】:2015-04-22 17:19:16
【问题描述】:

我正在使用ViewPager,即在MainActivity 类和Viewpager 类扩展片段之上。

问题是,通常当我们需要一个类返回一些result 时,在传递intent 时,我们使用startActivityforresult(intent,int),因此它将第二个活动中捕获的结果传递给调用它的类。

但是当我在 mainactivity 之上使用 viewpager 并且我正在使用 floating action button 时,当我单击按钮打开第二个活动时,它会将结果返回给 mainactivity 而不是 viewpager 类。

所以我的问题是如何将第二个活动的结果传递给我想要的课程?

更新:: MainActivity.java 这是我的主要课程,它使用意图以及从第二个活动课程ActivityTwo接收结果@

我在这里所做的是

startActivityForResult(intent,1);
public void onActivityresult(i,j,intent){MyFragment fragment;
fragment.onActivityReusult(i,j,intent);//Here i have passes the values      
received by this class to the fragment class where i need the values but it's not working
}

【问题讨论】:

  • 你能不能从你的主要活动中调用视图页面适配器,它会调用片段来向下传递数据
  • 是的,因为我正在我的 mainactivity 中创建和调用寻呼机类
  • 所以在 onActivityResult 结果中您可以调用 viewPageAdapter.passData(my data) 并将其传递给片段。并在您的适配器中创建传递数据
  • 抱歉我没听懂你..onActivity??
  • sorry onActivityResult 在活动中

标签: java android android-fragments android-viewpager onactivityresult


【解决方案1】:

您可以使用捆绑包。 看看这个话题:Bundle

bookDescFragment = new BookDescFragment();
Bundle args = new Bundle();
args.putInt(BookDescFragment.MyVariabl, VariableValue);
myFragment.setArguments(args);

【讨论】:

    【解决方案2】:

    最好的方法是创建一个Interface 和一个method。然后片段实现这个Interface。之后,您可以在onActivityResult 中调用此method。您只需在onActivityResult 中获取所需的片段并从其Interface 调用method

    编辑:

    接口示例:

    public interface Interface_example {
    
        public void onActivityResult();
    
    }
    

    片段示例:

    public class Fragment_example extends Fragment implements Interface_example {
    
        @Override
        public void onActivityResult() {
    
            //Here you can do whatever you want
    
        }
    
    }
    

    活动示例:

    public class Activity_example extends FragmentActivity {
    
        private ArrayList<Fragment> mFragmentList;
        private ViewPager mViewPager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_example);
    
            mFragmentList = new ArrayList<Fragment>();
            mFragmentList.add(new Fragment_example());
    
            mViewPager.setAdapter(new SimpleTabPagerAdapter(
                    getSupportFragmentManager(), mFragmentList));
    
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            Fragment _fragment = mFragmentList.get(mViewPager.getCurrentItem());
    
            if(_fragment instanceof Fragment_example){
    
                // This line will call that method previously created
                ((Fragment_example) _fragment).onActivityResult();
    
            }
    
        }
    
    }
    

    【讨论】:

    • 先生,您能用教程链接或示例代码之类的东西描述一下吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 2022-01-12
    • 1970-01-01
    • 2012-11-19
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多