Wie die call-Methode in der Haupt-Aktivität von einer anderen Aktivität?
Möchte ich nennen, eine öffentliche Methode in der Haupt-Aktivität von einer anderen Aktivität. Wie kann ich das tun?
class MainActivity extends Activity {
public void myMethod() {}
}
class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//How can I call myMethod() in MainActivity?
}
}
- kann die Methode statisch sein?
- Dieser wurde gefragt, viele Male vor.
- Ich möchte wissen, die Möglichkeit zum aufrufen von nicht-statischen Methode verwendet werden. Ich lese link.
- Die nicht statischen Weise ist in meiner Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kommt es an.
In die Falle, wenn Sie wollen einfach nur, um einige gemeinsame Funktionen (als Beispiel der code, der führt ein paar Berechnungen).
Ich würde empfehlen, um diese gemeinsame Funktionalität einigen standalone-Klasse, und rufen Sie es von dort.
In dem Fall, wenn Sie anrufen möchten MainActivity, also MainActivity Tat etwas mit MainActivity UI, Sie wird verwenden Absicht (http://developer.android.com/reference/android/content/Intent.html), da die MainActivity wieder aufgenommen werden sollten, und dann erst das es etwas tun kann, mit UI.
In diesem Fall, müssen Sie einige zusätzliche extra ' s Absicht, die analysiert werden, von MainActivity-code (in onCreate oder onResume) und nennen geeignete Methode.
Machen es
static
, pass in dieactivity
instanziieren, oder noch besser überdenken design-Ansatz? Ich glaube nicht, sollten Sie rufen eine Methode in einem anderenactivity
von Ihremmain activity
- könnte besser sein, einnew class
?Statische Code:
Instanziieren Aktivität:
Pass Aktivität Referenz:
MainActivity.static method();
Wie call-Methode in MainActivity aus einem anderen Aktivität GELÖST
Manchmal kann man nicht machen, die Methode statisch, da kommt es auf jede Art des anderen Staates in Ihrer MainActivity. Sie alle hängen Staat auch statisch, gleichbedeutend ist nur alles global und das ist einfach keine gute Idee.
Auch es ist nichts falsch mit dem Wunsch zu nennen, eine nicht-statische Methode in der MainActivity - es ist einfach wie eine Klasse ruft die andere.
Hier ist was Sie tun:
Ihre Anwendung ist in allen Ihren Aktivitäten (vorausgesetzt, dass Sie alle im selben Prozess). Diese Anwendung kann verwendet werden, zum speichern des Status. Obwohl eine vernünftige Idee wäre, nur um speichern Sie die Instanzen von Ihren Aktivitäten und lassen Sie Sie speichern Ihre jeweiligen Staaten, die ist, was wir tun werden.
erstellen Sie Ihre eigene Anwendung Unterklasse:
public class MyApplication extends Application
{
MainActivity mainActivity;
}
Passen Sie das manifest:
<application
android:name=".MyApplication"
...
In MainApplication initialisieren
MyApplication.mainActivity
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MyApplication ma = (MyApplication)getApplication();
ma.mainActivity = this;
...
in
OtherActivity
abrufen der MainActivity-Instanz.private MainActivity mainActivity;
mainActivity.someMethodOnMainActivtiy();
Erklären myMethod() als static.
Rufen Sie es überall in Ihrer Anwendung durch
MainActivity.myMethod();
Wenn Sie statische Methoden zum aufrufen von jeder Aktivität, die Sie haben sollte eine Utililty oder eine Helper-Klasse, wo Sie die Methoden aufrufen, die staticly von überall ich glaube nicht, dass es eine gute übung, um bee caling statische Methoden auf eine activyty zu einem anderen
Hier ist ein Beispiel für eine Hilfsklasse