不能在片段中使用MyActivity.this?

时间:2017-09-27 02:50:46

标签: java android android-fragments

我正在使用一个片段并尝试做一些简单的事情,例如触发吐司消息并遇到问题。我正在课堂上扩展片段。

public class UsersView extends Fragment {

    View myView;
    String globalUserID;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        myView = inflater.inflate(R.layout.users, container, false);

        //Global
        globalUserID = UserSettings.getUserID();
        System.out.println("*** USERSETTINGS " + globalUserID);

        if (globalUserID == "empty"){
            Toast.makeText(UsersView.this, "Something went wrong :(", Toast.LENGTH_LONG).show();
        }

        // The End
        return myView;
    }

}

我的麻烦来自吐司行,它不允许我使用UsersView.this,因为“没有找到合适的方法来制作文本”如果我不能以这种方式使用碎片我需要完全回到绘图板。有什么建议?一直坚持这个

3 个答案:

答案 0 :(得分:4)

Toast.makeText()方法的第一个参数是ContextFragment不是Android Context(与Activity不同)。

而不是UsersView.this,传递getActivity()

答案 1 :(得分:1)

在片段

中使用getActivity()
Toast.makeText(getActivity(), "Something went wrong :(", Toast.LENGTH_LONG).show();

答案 2 :(得分:1)

片段必须是活动的内部类(ActivityName),才能使用ActivityName.this。由于不是这种情况,请改用getActivity()

Toast.makeText(getActivity(),"Something went wrong :(", Toast.LENGTH_LONG).show();