2017-09-27 73 views
0

我正在使用一个片段,并试图做一些简单的事情,如发射吐司消息并发生问题。我在课堂上扩展了片段。不能在片段中使用MyActivity.this?

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,因为“没有合适的方法,找到了使文本:”如果我不能使用片段这样,我需要完全回去到绘图板。有什么建议么?一直卡在这

回答

4

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

而不是UsersView.this,通过getActivity()

+0

谢谢!你是男人 –

1

使用getActivity()在片段

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

谢谢!你是男人 –

+0

不客气。 –

1

片段必须是一个内部类的活动(ActivityName)供您能够使用ActivityName.this。由于它不是在这种情况下,使用getActivity()代替。

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

谢谢!你是男人 –

+0

如果你的片段是你的活动的非静态内部类,你可以使用'[ActivityName] .this',但在OP的问题中,'UsersView'是一个片段。所以你基本上是对的,但我只是想清楚,因为它可能会让别人感到困惑。 –