从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 转换为 Fragment
从 AsyncTask 启动 FragmentActivity