Android:如何将URL从一个片段传递到另一个片段

时间:2018-10-26 20:38:58

标签: android android-studio android-fragments android-intent android-activity

我的应用程序中只有几个片段,我想在单击该URL和下一个片段以打开该URL时将URL从当前片段发送到另一个片段。

2 个答案:

答案 0 :(得分:2)

创建第二个片段时,需要将URL作为参数传递:

Bundle bundle = new Bundle();
bundle.putString("url", myUrl);
Fragmentclass fragment = new Fragmentclass();
fragobj.setArguments(bundle);

以及在片段的onCreateView方法中:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    String url = getArguments().getString("url");    

}

文档:https://developer.android.com/reference/android/support/v4/app/Fragment.html#getArguments()

答案 1 :(得分:0)

here所述,您的片段不应直接相互通信。交流应通过活动进行。因此,对我而言,最好的方法是在第一个片段中创建Callback接口,并将父Activity转换为它:

public interface Callback {
    void onUrlOpen(String url);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    try {
        mCallback = ((Callback) getActivity());
    } catch (ClassCastException e) {
        throw new RuntimeException("Parent activity should implement callback interface!");
    }
}

在您的活动中实现此界面:

public class MainActivity extends AppCompatActivity implements Fragment1.Callback

在实现中(在MainActivity.java中)调用Fragment2的适当方法:

@Override
public void onUrlOpen(String url) {
    fragment2.openUrl(url);
}

然后,您只需要在第一个片段中调用mCallback.onUrlOpen("example.com");。这将调用您的活动的方法,而您的活动的方法将调用第二个片段的适当方法。

将来,您可以在Callback接口中添加其他方法,并在Activity中实现它们。