387 Stimmen

Aufruf einer Aktivitätsmethode aus einem Fragment

Ich versuche, eine Methode in meiner Aktivität von einem Fragment aus aufzurufen. Ich möchte, dass das Fragment der Methode Daten gibt und die Daten erhält, wenn die Methode zurückkehrt. Ich möchte erreichen, ähnlich wie auf eine statische Methode aufrufen, aber ohne die Verwendung von statischen, weil es Probleme in der Aktivität erstellen.

Ich bin neu bei Fragmenten und brauche eine einfache und pädagogische Erklärung!

Danke!

2voto

Mathan Chinna Punkte 539

Dies ist von der Klasse Fragment...

((KidsStoryDashboard)getActivity()).values(title_txt,bannerImgUrl);

Dieser Code von Activity Class...

 public void values(String title_txts, String bannerImgUrl) {
    if (!title_txts.isEmpty()) {

//Do something to set text 
    }
    imageLoader.displayImage(bannerImgUrl, htab_header_image, doption);
}

2voto

BIJAY_JHA Punkte 21
((your_activity) getActivity).method_name()

Dónde your_activity ist der Name Ihrer Aktivität und method_name() ist der Name der Methode, die Sie aufrufen wollen.

1voto

Maravilho Singa Punkte 224

Ich habe nach dem besten Weg gesucht, das zu tun, da nicht jede Methode, die wir aufrufen wollen, im Fragment mit demselben Activity Parent liegt.

In Ihrem Fragment

public void methodExemple(View view){

        // your code here

        Toast.makeText(view.getContext(), "Clicked clicked",Toast.LENGTH_LONG).show();
    }

In Ihrer Aktivität

new ExempleFragment().methodExemple(context);

1voto

Ich habe alle in diesem Thread vorgestellten Methoden ausprobiert und keine hat bei mir funktioniert, versuchen Sie diese. Es hat bei mir funktioniert.

((MainActivity) getContext().getApplicationContext()).Method();

1voto

Infomaster Punkte 545

Für Kotlin probieren Sie es aus

class DataForm : Fragment() {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        Tasks(this).getData()
    }

    fun getResponse(response: String) {
        // code
    }
}

class Tasks(private val context: Any) {
    fun getData() {

        val getContext = (context as DataForm).activity
        val getFragment = (context as DataForm)

        val responseListener = Response.Listener<String> { response ->
            getFragment.getResponse(response)
        }

        val errorListener = Response.ErrorListener { error ->
            error.printStackTrace();
        }

        val stringRequest = StringRequest(Request.Method.GET, url, responseListener, errorListener)
        Volley.newRequestQueue(getContext).add(stringRequest)
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X