在 FragmentStatePagerAdapter 中显示 Android Toast 消息

Display Android Toast message in FragmentStatePagerAdapter

我正在尝试在 FragmentStatePagerAdapter 中显示 toast 消息,但我失败了。

我需要获取上下文以插入我的代码

Toast.makeText(, "The message", Toast.LENGTH_SHORT).show();

但我不能使用 getContext()getActivity(),因为我没有任何 onCreateView 方法,而且我不知道任何其他获取上下文的方法。

这是我的 FragmentStatePagerAdapter 代码:

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.widget.Toast;

import com.mobaleghan.tablighcalendar.view.fragment.PrayerListViewContainerFragment;
import com.mobaleghan.tablighcalendar.view.fragment.TablighDataTabFragment;

public class TabbedKnowledgeAdapter extends FragmentStatePagerAdapter {

    private int mNumOfTabs;
    private TabLayout tabLayout;

    public TabbedKnowledgeAdapter(FragmentManager fm, int NumOfTabs, TabLayout tabLayout) {
        super(fm);
        this.mNumOfTabs = NumOfTabs;
        this.tabLayout = tabLayout;

    }

    @Override
    public Fragment getItem(int position) {

        //Some codes

        Toast.makeText(, "the message", Toast.LENGTH_SHORT).show(); //I need context

        //Some other codes

    }

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

那么如何在 FragmentStatePagerAdapter 中获取上下文?

在构造函数中传递上下文

Context context;
public TabbedKnowledgeAdapter(FragmentManager fm, Context ctx, int NumOfTabs, TabLayout tabLayout) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
    this.tabLayout = tabLayout;
    this.context = ctx;

}

并在您的 Toast 中传递此上下文。

使用应用程序的上下文

例如

@Override
public Fragment getItem(int position) {

    //Some codes

    Toast.makeText(((SampleApplication)getApplication()).getApplicationContext(), "the message", Toast.LENGTH_SHORT).show(); //I need context

    //Some other codes

}

您可以使用:

tabLayout.getContext();