如何将参数从活动传递到片段

时间:2016-05-12 16:14:10

标签: android android-fragments

我试图将web url的地址从pageradapter传递给我的片段,但在那个过程中我得到一个空对象引用错误。 这是我的pageradapter

public class TabPagerAdapter extends FragmentStatePagerAdapter
{

    int tabCount;


    public TabPagerAdapter(FragmentManager fm, int numberOfTabs)
    {
        super(fm);
        this.tabCount = numberOfTabs;

    }


    @Override
        public Fragment getItem(int position)
        {
            switch (position)
            {
                case 0:

                    Yahoo tab1 = new Yahoo();
                    Yahoo.newInstance("https://www.yahoo.com");
                    return tab1;

                    default:
                    return null;

            }
 @Override
    public int getCount()
    {
        return tabCount;
    }
}

这是我的片段。我不知道为什么我不能让它工作。我试图在onCreate方法中也使用相同的东西,但错误仍然存​​在。

public class Yahoo extends Fragment {

   private WebView webView;
    private ProgressBar progressBar1;
    private SwipeRefreshLayout mSwipeRefreshLayout1;

    public Yahoo() {
        // Required empty public constructor
    }

  public static Yahoo newInstance(String webUrl) {
        Yahoo yahoo= new Yahoo();
        //set arguments
        Bundle args = new Bundle();
        args.putString("website", webUrl);
        yahoo.setArguments(args);

        return Yahoo;

    }

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
         return inflater.inflate(R.layout.fragment_tab, container, false);
 }
  @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

        //getting error here when calling  back arguments
       final String url = getArguments().getString("website");
       webView.loadUrl(url);


}

1 个答案:

答案 0 :(得分:1)

您将返回一个新片段,而不是newInstance。

试试这个:

case 0:
   return Yahoo.newInstance("https://www.yahoo.com");