Rufen Sie startActivity einer activity-Klasse von einer anderen Klasse(overlay)

habe ich Target.java(es ist die wichtigste Aktivität) und Layout.java.
Wenn der Benutzer auf eine Schaltfläche klickt, eine url öffnet.
Klicken Sie auf die Schaltfläche verarbeitet wird, in Layout.java.

    deleteButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
             DebugLog.LOGD("Within onClick event of 'GO' button ");
            Target.openURL();

        }
    });

Target.java hat eine statische Funktion openURL

    public static void openURL() {
     Uri uri = Uri.parse("http://www.thecinema.in");
     Intent intent = new Intent(Intent.ACTION_VIEW, uri);
     startActivity(intent);

     }

Ich würde gerne wissen, wie ich kann, damit dieser code funktioniert, da der Fehler im immer jetzt ist "Nicht möglich ist, einen statischen Verweis auf die nicht-statische Methode startActivity(Intent) vom Typ Activity" . Ich kann verstehen, startActivity wird nicht funktionieren, die innerhalb einer statischen Funktion, aber bitte mir empfehlen, wie könnte ich erreichen das Ziel ..ich bin ein Neuling auf android.Zur info ..Danke Jungs

-Code aktualisiert :
Layout.java

    deleteButton.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
             DebugLog.LOGD("Within onClick event of 'GO' button ");
            Target iA = new Target();
            iA.openURL();


        }
    });

Target.java

     public void openURL() {    //removed static keyword
     DebugLog.LOGD("Within nDelete event of GO button ");

     Uri uri = Uri.parse("http://www.thecinema.in");
     Intent intent = new Intent(Intent.ACTION_VIEW, uri);
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
     startActivity(intent);

 }

Ausnahme geworfen:

    03-02 10:10:28.351: D/QCAR(6820): Within onClick event of 'GO' button 
    03-02 10:10:28.351: W/dalvikvm(6820): threadid=1: thread exiting with uncaught exception (group=0x400207d8)
    03-02 10:10:28.361: E/AndroidRuntime(6820): FATAL EXCEPTION: main
    03-02 10:10:28.361: E/AndroidRuntime(6820): java.lang.NullPointerException
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.app.Activity.startActivityForResult(Activity.java:2817)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.app.Activity.startActivity(Activity.java:2923)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at com.ingage.pocs.phonegap.Layout$4.onClick(Layout.java:124)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.view.View.performClick(View.java:2408)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.view.View$PerformClick.run(View.java:8816)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.os.Handler.handleCallback(Handler.java:587)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at  android.os.Handler.dispatchMessage(Handler.java:92)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.os.Looper.loop(Looper.java:123)
    03-02 10:10:28.361: E/AndroidRuntime(6820):     at android.app.ActivityThread.main(ActivityThread.java:4633)

Jungs, was schief gelaufen hier..

  • entfernen Sie die Statik von openURL(), wenn Sie verwenden möchten, openURL anderen Orten, erstellen Sie ein Objekt der openURL enthaltenen Klasse und rufen diese Methode auf. dies löst nicht machen statischen Verweis Fehler..
  • Danke thinkstep.ich habe versucht, erstellen ein Objekt aus der Ziel-in Layout und versucht, den Aufruf nicht-statische Funktion openURL(Chk aktualisierten code). Die func aufgerufen wurde aber eine Ausnahme geworfen wurde.. java.lang.NullPointerException
InformationsquelleAutor elixir bash | 2012-03-01
Schreibe einen Kommentar