使用从 Activity 传递的数据更新 Fragment UI

2024-03-19

我的要求:

My MainActivity从其他应用程序接收数据。MainActivity被列为shareable.

现在,我需要将此数据传递给fragment in MainActivity并更新fragment's textview.

In MainActivity.java:在这里我正在处理接收到的数据(这是一个 URL)handleSendText method.

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("text/plain".equals(type)) {
            handleSendText(intent); // Handle text being sent
        }
    }
}

In handleSendText,我正在尝试创建一个包并将该数据传递到我的片段。

void handleSendText(Intent intent) {
    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
    if (sharedText != null) {
   
        Bundle bundle = new Bundle();
        bundle.putString("url", sharedText);

   // set Fragmentclass Arguments
        AddTab fragobj = new AddTab(); //AddTab() is my Fragment class's name
        fragobj.setArguments(bundle);
    }

In 片段类:在它的 onCreateView() 中

   public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
...
//some code

       Bundle bundle = this.getArguments();

        if(bundle!=null) {
     
            String sharedUrl = getArguments().getString("url");
     
            textBox.setText(sharedUrl);

            inflater.inflate(R.layout.fragment_add, container, false);
            // to update the UI to reflect changes, I'm trying the 
           // above line. Is it right?            
        }

1)问题是控件永远不会到达内部if循环,这意味着bundle总是会回来NULL.

2)此外,如果我没有收到其他应用程序的数据。我想离开我的editText空,所以我必须执行此检查。我怎样才能做到这一点?

3)此外,从setArgument's 文档 http://developer.android.com/reference/android/app/Fragment.html#setArguments(android.os.Bundle),我了解到应该在片段附加到其活动之前调用它。那么如何将变化反映到Fragment的UI中呢?

公共无效setArguments(捆绑参数)

提供该片段的构造参数。这只能在片段附加到其活动之前调用;也就是说,你应该打电话 构建片段后立即执行。提供的参数 这里将在片段销毁和创建过程中保留。


只需在片段中添加适当的方法,如下所示:

public void receiveURL(String input){
//to handle what you want to pass to the fragment
}

在您的 mainActivity 调用中,您可以执行以下操作:

YourFragment fragment = (YourFragment)getSupportFragmentManager.findFragmentById(R.id.your_fragment);
fragment.receive(sharedUrl);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用从 Activity 传递的数据更新 Fragment UI 的相关文章

随机推荐