片段getArguments(在onResume中)返回null

时间:2017-03-17 13:32:26

标签: android android-fragments

我正在尝试将一些数据从Activity发送到Fragment。

我需要在片段的 onResume 方法中获取数据,但我想这是不可能的?

参数只能在onCreate()中接收?

的活动:

string = '000,001,100,001'
pattern = '(.*)00(.*),(.*)00(.*)'

for m in re.finditer(pattern, string):
    print(m.groups())

片段:

public void someMethod() {
String someString = "test";

   Bundle bundle = new Bundle();
   bundle.putString("message", someString);
   VFragment.getInstance().setArguments(bundle);
}

3 个答案:

答案 0 :(得分:1)

好吧,我不知道builder()build是什么,但这是好习惯......

public static VFragment newInstance(String text) {
        Bundle b = new Bundle();
        b.putExtrs("message", text)
        VFragment mF = new VFragment();
        mF.setArguments(b);
        return mF;
    }

试一试。 Reference

答案 1 :(得分:0)

以下是我的代码示例:

  • Fragment 1

                        reservation_main_data reservation_main_data = new reservation_main_data();
                        Bundle bundle = new Bundle();
                        bundle.putCharSequence(bundle_string, txt_results_experience.getText()); //Sending the experience name clicked to another fragment
                        reservation_main_data.setArguments(bundle);
                        FragmentManager manager = getActivity().getSupportFragmentManager();
                        manager.beginTransaction().replace(R.id.framelayout_secundary, reservation_main_data, reservation_main_data.getTag()).commit();
    
  • Fragment 2

    Bundle bundle = this.getArguments();

if (bundle != null) { CharSequence myInt = bundle.getCharSequence(bundle_string); txt_results_experience.setText(String.valueOf(myInt)); }

答案 2 :(得分:0)

首先感谢所有回应并试图提供帮助的人。 我的错误,我忘了提到我使用Android Annotations。

使用注释执行此操作的正确方法是:

在' targetFragment'中设置FragmentArg:

@FragmentArg
String receiveA;

制作片段的接收者方法:

public static VFragment getInstance(String message) {
        // Do something with String message
        return VFragment_.builder().receiveA(message).build();
    }

在'来源'中拨打电话发送数据的活动:

VFragment.getInstance("This is a test");

结果在targetFragment中:

@Override
public void onResume() {
    super.onResume();
    Log.v(TAG, message); // Prints 'This is a test'
}