2017-05-18 54 views
0

私はアンドロイドスタジオでJavaを使用しています。別のクラスから新しいクラスを開始したいと思います(私はListenerServiceFromWearにあり、MainActivityを開始します) Mainactivityが起動したら、Mainactivityにメソッド(startEmergencyMode();)を開始したいと思います。新しいアクティビティを開始し、そのアクティビティでメソッドを開始する方法

ListenerServiceFromWearからどうやったらいいですか?

+0

'' MainActivityミリアンペア=新しいMainActivityを呼び出します(); ma.startEmergencyMode(); ''? – f1sh

+0

私はそれを試みましたが、mainActivityを探していると思われるときにlistener.javaファイルを探しているので、view.findById()でエラーが発生します。だから、私はおそらく、mainactivityファイルを実際に起動するのではなく、別のjavaファイルからメソッドを呼び出して、メソッドを呼び出すと思ったのです。 – hxwtch

答えて

0

私は非常にあなたがあなたのいずれか、Javaで

を「開始」によって何を意味するのか理解していない:

  • staticフィールドやメソッドは、オブジェクトや使用のインスタンスを作成します宣言し

    • そのpublicフィールドとメソッド。

    あなただけMainActivityの一つ「インスタンス」を持っているしたい場合は、静的メソッドを使用します。あなたはMainActivity.startEmergencyMode()を使ってどこからでも呼び出すことができます

    public static void startEmergencyMode() { 
        // Code here 
    } 
    

    を。 この静的メソッドは静的フィールドおよびその他の静的メソッドにのみアクセスできます。

    あなたがMainActivityのインスタンスを作成したい場合は、単に1を作成してメソッドを呼び出す:あなたは、静的および非静的メソッドやフィールドの違いを理解していない場合は

    public void startEmergencyMode() { 
        // Code here 
    } 
    
    
    // Somewhere else 
    MainActivity activity = new MainActivity(); 
    activity.startEmergencyMode(); 
    

    を、答えを参照してください。このスレッドに:目的とし、意図の余分でWhat does 'public static void' mean in Java?

  • +0

    これは動作しますが、これを行うと、異なるJavaクラス。私はおそらく最初に意図を持って活動を開始し、次にその方法を呼び出さなければならないと思いましたか? – hxwtch

    +0

    私はadroid開発者ではありませんが、私は 'ListenerServiceFromWear'があなたが作ったクラスだと思いますか?もしそうなら、どこから? 'MainActivity'から作成されたものであれば、' thisA'を使って 'ListenerServiceFromWear'のコンストラクタに' MainActivity'のインスタンスを渡してから、 – 086

    +0

    のメソッドを呼び出すためにそのオブジェクトを使用してください。アンドロイドのループにいる。したがって、ライフサイクルイベントは呼び出されません。ありがとう。 – litelite

    1

    スタートMainActivitystartMergencyMode()

    を呼び出すために MainActivityを教えてくれるいくつかのフラグを入れます

    そしてMainactivityで実際にstartEmergencyMode()

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        // ... 
    
        Intent intent = getIntent(); 
        boolean isEmergency = intent.getBooleanExtra("isEmergency", false); 
    
        if(isEmergency){ 
         startEmergencyMode(); 
        } 
    } 
    
    +0

    しかし、インテントを開始することによって私はエラーが発生します:android.app.Applicationは、com.my_emergency.samdesmedt.my_emergency.mainActivityにキャストすることはできません – hxwtch

    +0

    @hxwtchこれは[this]と同じ問題かもしれません(http://stackoverflow.com/questions/18830205/application-crash-with-android-app-application-can-be-cast-to) – litelite

    関連する問題