2013-11-07 2 views
2

у меня есть этот адаптер для фрагментов:Android FragmentPagerAdapter получить контекст

public class TabsPagerAdapter extends FragmentPagerAdapter { 
    private Context context; 

    public TabsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 


    @Override 
    public Fragment getItem(int index) { 

     switch (index) { 
     case 0: 
      // Main fragment activity 
      return new main(); 
     case 1: 
      // Sensors fragment activity 
      return new sensors(); 
     case 2: 
      // Display fragment activity 
      return new display(); 
     case 3: 
      // Settings fragment activity 
      return new settings(); 
     } 

     return null; 
    } 

    @Override 
    public int getCount() { 
     // get item count - equal to number of tabs 
     return 4; 
    } 
    } 

Я triing сделать кнопку назад выход с двойным краном и тостов таким образом:

private static final long DOUBLE_PRESS_INTERVAL = 2000000000; 
     private long lastPressTime; 

     public void onBackPressed() { 
      Toast.makeText(context, 
      Resources.getSystem().getString(R.string.kilepes_dupla), 
      Toast.LENGTH_SHORT).show(); 

      long pressTime = System.nanoTime(); 
      if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) { 
       // this is a double click event 
       System.exit(0); 

      } 
      lastPressTime = pressTime; 

     } 

Что я могу «Сделайте, чтобы получить контекст в тосте, поэтому я не могу его показать. Как я могу изменить код, чтобы заставить его работать? Спасибо за ответы!

edit1: хорошо, это учебник, что я использую: androidhive и я хочу, чтобы сделать этот метод выхода на каждой вкладке

+0

Где ваша кнопка? это внутри фрагмента? – zozelfelfo

+0

это кнопка phisicall back – David

+0

@David, где вы добавили, что 'onBackPressed()' внутри класса FragmentPagerAdapter' или 'fragment'? – SathishKumar

ответ

-1

вы должны использовать getActivity()

, как это

  Toast.makeText(getActivity() , ...... 
+1

Метод getActivity() не определен для типа TabsPagerAdapter – David

+1

Фрагмент не имеет onBackPressed. Это метод деятельности – Blackbelt

2

вы должны быть в Activity контексте (onBackPressed является метод Activity), так что вы должны изменить context с this

-2

Вы можете использовать

getActivity() 

или

getActivity().getApplicationContext() 
0

Попробуйте это:

public class TabsPagerAdapter extends FragmentPagerAdapter { 
private Context context; 

public TabsPagerAdapter(FragmentManager fm, Context mContext) { //add Context to contructor 
    super(fm); 
context = mContext; //pass context 
} 

@Override 
public Fragment getItem(int index) { 

     switch (index) { 
     case 0: 
      // Main fragment activity 
      return new main(); 
     case 1: 
      // Sensors fragment activity 
      return new sensors(); 
     case 2: 
      // Display fragment activity 
      return new display(); 
     case 3: 
      // Settings fragment activity 
      return new settings(); 
     } 

     return null; 
    } 

@Override 
public int getCount() { 

     // get item count - equal to number of tabs 
     return 4; 
    } 
}