2015-01-03 3 views
4

Я плохо говорю по-английски. Так много неловко. Кроме того, я хочу, чтобы я понял, поэтому я использовал переводчик Google.android - findViewById NULL при использовании фрагмента

У меня был исходный код ошибки Null Pointer.

Как я могу исправить?

Первой Это Xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="${relativePackage}.${activityClass}" > 

    <LinearLayout 

     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <ToggleButton 
      android:id="@+id/toggleButton1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.50" 
      android:text="ToggleButton" /> 

     <ToggleButton 
      android:id="@+id/toggleButton2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.50" 
      android:text="ToggleButton" /> 
    </LinearLayout> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager2" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" /> 

</LinearLayout> 

Это ява Файл

package ui.tab; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 

import com.kdevproject.game.mining.R; 

public class Tab2Activity extends Fragment{ 


    // newInstance constructor for creating fragment with arguments 
    public static Tab2Activity newInstance() { 
     Tab2Activity tab2Activity = new Tab2Activity(); 
     return tab2Activity; 
    } 

    // Store instance variables based on arguments passed 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

    } 

    // Inflate the view for the fragment based on layout XML 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_tab2, container, false); 
     if (container == null) { 
      return null; 
     } 

     ViewPager mViewPager = (ViewPager) getView().findViewById(R.id.pager2); 

     return view; 
    } 
} 

class MyPagerAdapter extends FragmentPagerAdapter { 
    private static int NUM_ITEMS = 6; 

    public MyPagerAdapter(FragmentManager fragmentManager) { 
     super(fragmentManager); 
    } 

    // Returns total number of pages 
    @Override 
    public int getCount() { 
     return NUM_ITEMS; 
    } 

    // Returns the fragment to display for that page 
    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: // Fragment # 0 - This will show FirstFragment 
      return Tab2_1Activity.newInstance(); 
     case 1: 
      return Tab2_1Activity.newInstance(); 

     } 
     return null; 
    } 

    // Returns the page title for the top indicator 
    @Override 
    public CharSequence getPageTitle(int position) { 
     return "Page " + position; 
    } 

} 
+0

Опубликовать свой логарифм –

+3

использовать 'view' вместо' getView() 'in' (ViewPager) getView(). FindViewById (R.id.pager2); '. в 'onCreateView',' getView' является нулевым, если вы хотите использовать 'getView()' вы можете использовать 'onViewCreated()' метод –

+1

+ 1 для ваших усилий –

ответ

3

view Использование вместо getView() в onCreateView для инициализации ViewPager:

ViewPager mViewPager = (ViewPager)view.findViewById(R.id.pager2); 
+0

Я надеюсь, что это правильно –

+1

@IntelliJAmiya спасибо, это работа! –

+0

Примите этот ответ. Если этот ответ поможет вам –

Смежные вопросы