wake-up-neo.net

Verwenden Sie Toast in Fragment

Ich versuche, eine Toast-Nachricht anzuzeigen, wenn der Benutzer auf eine Schaltfläche in einem Fragment klickt. Das Problem ist, dass ich nicht auf die Aktivität zugreifen kann, um den Toast darauf anzuzeigen.

Hier ist die Quelle von Fragment:

    public class FrgTimes extends Fragment
    {
        ScrollView sv;
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) 
        {
            if (container == null) { return null; }

            sv = (ScrollView)inflater.inflate(R.layout.frg_times, container, false);

            btnTime1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

            //******  HERE's the PROBLEM  ********
            Toast.makeText(<The Activity>, "Please long press the key", Toast.LENGTH_LONG );

            }});

            return sv;
        }

und hier ist, was ich versucht habe.

Toast.makeText( getActivity()  , ...
Toast.makeText( getView().getContext()  , ...
Toast.makeText( getActivity().getApplicationContext()  , ...
Toast.makeText( sv.getContext()  , ...
Toast.makeText( sv.getRootView().getContext()  , ...

In Debug kann ich sehen, dass alle diese Codes ohne Ausnahme laufen, aber keine TOAST angezeigt wird.

47
mammadalius

Sie rufen nicht show() für die Toast auf, die Sie mit makeText() erstellen.

100
CommonsWare

Wie von alfo888_ibg festgestellt:

@Override
public void onClick(View arg0) {
   Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}

Mach einfach:

    Toast.makeText(getActivity(),"Text!",Toast.LENGTH_SHORT).show();

das hat für mich funktioniert.

48
user2564789

Um anderen Leuten bei meinem gleichen Problem zu helfen, lautet Die vollständige Antwort auf Toast in Fragment verwenden lautet:

Activity activity = getActivity();

@Override
public void onClick(View arg0) {

    Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}
20
alfo888_ibg

Wenn Sie einen Toast in Fragment machen, gehen Sie wie folgt vor:

Toast.makeText(getActivity(),"Message", Toast.LENGTH_SHORT).show();

Wenn die Klasse ein Fragment erweitert, muss getActivity () verwendet werden, da das Fragment eine Unterklasse der Aktivität ist.

Cheerse

12
Sindri Þór

Sie können die aktuelle Aktivität mit getActivity () abrufen.

Toast.makeText(getActivity(),"Toast your message" ,Toast.LENGTH_SHORT).show();
7
andy bit1

Einen Toast im Fragment machen 

 Toast.makeText(getActivity(), "Your Text Here!", Toast.LENGTH_SHORT).show();

OR

    Activity activityObj = this.getActivity();

    Toast.makeText(activityObj, "Your Text Here!", Toast.LENGTH_SHORT).show();

OR

Toast.makeText(this, "Your Text Here!", Toast.LENGTH_SHORT).show();
5
Ramesh

user2564789 hat es richtig gesagt
Sie können jedoch auch this anstelle von getActivity() verwenden.
wodurch Ihr Toast so aussieht


     Toast.makeText(this,"Message",Toast.LENGTH_SHORT).show();
    

1
vaibhav3027

Wenn Sie Toast in einem Android-Fragment aufrufen:

1. Activity mActivity=this.getActivity();  

2. Toast.makeText(mActivity,"Text you want to display",Toast.LENGTH_SHORT).show();

Das funktioniert für mich.

1
Lakshan Vithana

Einzigartiger Ansatz

(Funktioniert für Dialog, Fragment, Even Util usw.)

ApplicationContext.getInstance().toast("I am toast");

Fügen Sie den folgenden Code in der Anwendungsklasse entsprechend hinzu.

public class ApplicationContext extends Application {

private static ApplicationContext instance;

@Override
public void onCreate() {
    super.onCreate();
    instance = this;
}

public static void toast(String message) {
    Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
}
0
Khemraj