Android FragmentPagerAdapter获取上下文。

3

我有这个用于片段的适配器:

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

我正在尝试通过双击返回按钮并弹出提示框的方式退出页面,代码如下:
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;

        }

我无法获得toast中的上下文,因此无法显示它。如何修改代码使其正常工作?感谢您的回答!
编辑1: 好的,我正在使用的是这个教程: androidhive 我想在每个选项卡上使用此退出方法。

你的按钮在哪里?它在一个片段内吗? - zozelfelfo
这是物理返回按钮。 - David
@David,你把 onBackPressed() 添加到了 FragmentPagerAdapter 还是 fragment 类中? - SathishKumar
FragmentPagerAdapter类与其他类不在同一个包中。 - David
4个回答

2

你应该在Activity上下文中(onBackPressedActivity的一个方法),所以你应该用this替换context


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

-1

你必须使用 getActivity() 方法

像这样

         Toast.makeText(getActivity() , ......

1
方法getActivity()对于类型TabsPagerAdapter未定义。 - David
1
Fragment没有onBackPressed方法。那是Activity的一个方法。 - Blackbelt

-2

你可以使用

getActivity()

或者

getActivity().getApplicationContext()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接