2016-05-12 361 views
-2

我想從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); 


} 
+0

我看不出有什麼問題,你的代碼,你可以解釋,爲什麼它不工作?你有什麼錯誤? –

+0

是的,那正是我無法弄清楚的。總之,我有一個帶查看尋呼機的tablayout。主要活動初始化選項卡並且pageradapter關聯片段。上面標記的錯誤是java.lang.NullPointerException:試圖在空對象引用 – choman

+0

上調用虛擬方法'java.lang.String android.os.Bundle.getString(java.lang.String)'請添加PageAdapter –

回答

1

您正在返回一個新的片段,而不是newInstance。

試試這個:

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

是的,這是修復,但你比我快了 –

+0

是的,謝謝你們倆:) – choman