如何访问从片段到主要活动的字符串值?

时间:2017-05-04 09:09:08

标签: android android-fragments

我有一个Android应用程序,其中我使用了webview片段。从该片段,我将使用下面的代码获取当前的URL。但问题是我想从MainActivity访问String webUrl

我怎样才能得到它?我实际计划做的是根据片段中用户的意愿创建一个喜欢的网址。

final String webUrl = view.getUrl();

2 个答案:

答案 0 :(得分:1)

从活动到片段: 在您的片段中,使用getActivity()方法访问Activity的对象。

YourActivity activity = (YourActivity) getActivity();
activity.someString = "some_url";
webView.setUrl(activity.someString);

从片段到活动:

FragmentManager fm = getSupportFragmentManager();
SampleFragment sampleFragment=(SampleFragment)  fm.findFragmentById(R.id.fragment_id);
activity.someString = "some_url";
webView.setUrl(activity.someString);

您的片段根视图应具有相同的ID:

SampleFragment.xml档案

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_id" >
<!-- [Your other layout views goes here] -->
</LinearLayout>

答案 1 :(得分:1)

创建界面:

public interface HomeListener {

    void onHomeClick(String url);
}

现在在片段中:

HomeListener mCallback;

 @Override
    public void onAttach(Context con) {
        super.onAttach(con);
        try {
            mCallback = (HomeListener) con;
        } catch (ClassCastException e) {
            e.printStackTrace();
        }
    }


    @Override
    public void onDetach() {
        mCallback = null;
        super.onDetach();
    }

现在,当网址获取时:

mCallback.onHomeClick(view.getUrl());

最后在Activity中,实现HomeListener,并覆盖方法:

@Override
    public void onHomeClick(String url) {

       Log.e("urlFromFragment",url);


}

示例活动:

public class MainActivity extends AppCompatActivity
        implements HomeListener {

        String URL="";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        }


        @Override
    public void onHomeClick(String url) {

           URL=url;
          Toast.makeText(getApplicationContext(), URL, Toast.LENGTH_LONG).show();
        }