2

I want to create a common search for different websites at same time.So I imported text of an EditText from an activity to Fragment activity.Now how to import that text to a fragment?

FragmentActivity:

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;
    }


}

Fragment :

`

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") pass this into your fragemnetA parameter. – Surender Kumar Mar 03 '15 at 18:06
  • I tried that too,but in mainactivity,from where I imported text,I used startActivity(myIntent),but FragmentA don't come under Activity,So I get error 'Did you declared Fragment in manifest?' –  Mar 03 '15 at 18:11

1 Answers1

0

Rather than use the default constructor for your Fragment, follow this common pattern of using a static newInstance() method to pass arguments. Stash these into the arguments bundle then pull them out in the Fragment during its onCreateView() (or wherever you actually need it.)

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
        ...
    }
}
Larry Schiefer
  • 15,687
  • 2
  • 27
  • 33
  • I'm extremely sorry for asking this(I'm a beginner).How to get mTextview of Activity's text to args?I tried ARG_TEXT ="mTextview",but I'm getting Java null point exception.. –  Mar 03 '15 at 19:39
  • You don't want to have the `Fragment` directly access the `View` hosted by the `Activity`. If you need to pass the string contents from the `TextView`, that's what my sample code above outlines. The `Fragment` should only directly manipulate its own views and components. – Larry Schiefer Mar 03 '15 at 20:02