2017-09-27 72 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'是一個片段。所以你基本上是對的,但我只是想清楚,因爲它可能會讓別人感到困惑。 –