从fragmentactivity导入文本到fragment

Posted

技术标签:

【中文标题】从fragmentactivity导入文本到fragment【英文标题】:Import text from fragmentactivity to fragment 【发布时间】:2015-05-04 11:18:25 【问题描述】:

我想同时为不同的网站创建一个通用搜索。所以我将 EditText 的文本从活动导入到 Fragment 活动。现在如何将该文本导入到 Fragment?

片段活动:

public class MyActivity6 extends FragmentActivity 
TextView mTextview;
ViewPager viewPager = null;



@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_activity6);
    viewPager = (ViewPager) findViewById(R.id.pager);
    FragmentManager fragmentManager = getSupportFragmentManager();
    viewPager.setAdapter(new MyAdapter(fragmentManager));
    mTextview = (TextView)findViewById(R.id.textView8);

    mTextview.setText(getIntent().getStringExtra("mytext"));




class MyAdapter extends FragmentStatePagerAdapter 

    public MyAdapter(FragmentManager fm) 
        super(fm);
    


    @Override
    public Fragment getItem(int i) 
        Fragment fragment = null;


        if (i == 0) 
            fragment = new FragmentA();
        
        if (i == 1) 
            fragment = new FragmentB();
        
        if (i == 2) 
            fragment = new FragmentC();
        
        if (i == 3) 
            fragment = new FragmentD();
        
        return fragment;
    

    @Override
    public int getCount() 

        return 4;
    

    public CharSequence getPageTitle(int position) 
        String title = new String();
        if (position == 0) 
            return "Flipkart";
        
        if (position == 1) 
            return "Amazon";
        
        if (position == 2) 
            return "Snapdeal";
        
        if (position == 3) 
            return "Ebay";
        
        return null;
    



片段:

`

public class FragmentA extends Fragment 
TextView mText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    View mainView = (View)
            inflater.inflate(R.layout.fragment1, container, false);
    WebView webView = (WebView)
            mainView.findViewById(R.id.webView12);
    WebSettings webSettings = webView.getSettings();
    webSettings.setjavascriptEnabled(true);
    webSettings.getAllowContentAccess();
    webSettings.getDatabaseEnabled();
    webSettings.getAllowFileAccess();
    webSettings.getCacheMode();
    webView.loadUrl("http://m.flipkart.com/search?q=");
    webView.setWebViewClient(new WebViewClient());
    // Set up the ViewPager with the sections adapter.
    webView.setWebViewClient(new MyWebViewClient());




    return mainView;



【问题讨论】:

getIntent().getStringExtra("mytext") 将此传递给您的 fagemnetA 参数。 我也试过了,但是在 mainactivity 中,从我导入文本的地方,我使用了 startActivity(myIntent),但是 FragmentA 不在 Activity 下,所以我收到错误'你在清单中声明了 Fragment ?' 【参考方案1】:

不要使用Fragment 的默认构造函数,而是遵循使用静态newInstance() 方法传递参数的常见模式。将这些存储到参数包中,然后在其onCreateView() 期间将它们拉出Fragment(或您实际需要的任何地方。)

public class MyFragment extends Fragment 
    ...
    private static final String ARG_TEXT = "_arg_text";
    ...
    public static MyFragment newInstance(String myText) 
        Bundle args = new Bundle();
        args.putString(ARG_TEXT, myText);
        MyFragment ret = new MyFragment();
        ret.setArguments(args);
        return;
    

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View mainView = (View)
            inflater.inflate(R.layout.fragment1, container, false);
        Bundle args = getArguments();
        String text = args.getString(ARG_TEXT);

        //  Now use the text however you'd lik
        ...
    

【讨论】:

非常抱歉问这个问题(我是初学者)。如何将 Activity 文本的 mTextview 获取到 args?我尝试了 ARG_TEXT ="mTextview",但我得到了 Java 空点例外.. 您不想让Fragment 直接访问由Activity 托管的View。如果您需要从TextView 传递字符串内容,这就是我上面的示例代码概述的内容。 Fragment 应该只直接操作它自己的视图和组件。

以上是关于从fragmentactivity导入文本到fragment的主要内容,如果未能解决你的问题,请参考以下文章

无法解析符号“FragmentActivity”

从 fragmentActivity 刷新片段 UI

将 FragmentActivity 转换为 Fragment

从 AsyncTask 启动 FragmentActivity

Android - 如何从 FragmentActivity 访问 Fragment

将参数从 Android FragmentActivity 传递给 Fragment