2017-02-02 5 views
0

私はボタンを持っています、onclick = "weboscio"。VOID:静的で非静的な同じボタンで呼び出されます

public void web(View view) { 
    Intent intent = new Intent(this, about.class); 
    startActivity(intent); 
    //opens a new layout 

も:私はクリックで二つのことやりたい

public static void warning(Context context, int id, int titleResId, int textResId, PendingIntent intent) { 

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    String title = context.getString(titleResId); 
    ....etc.... 
    // to open a pop-up window 

ただ一つの活性にそこ2つの空隙を入れて、ボタンのクリックでそれを呼び出します。私はかなり多くのことを探索しますが、便利な何も。私も試みなかっ:

public static void weboscio(String args[]) { 
     home something = new something(); 
     something.web(); 
     new something().warning(); 

それは明らかに..非静的ボイドに対してのみ機能し、また、私は((HERE).webのエラーを取得し、.warningましたここに)。新しいレイアウトにいくつかを表示するようになって

警告 =アクティビティを開くことになっ

weboscio = onclickの機能

ホーム =メインJavaアクティビティ

ウェブ =アクティビティ新しいレイアウトに関する警告

+0

'home.warning();' –

+0

ふむ、私はそれを見落とし、それでも、なぜIAMが**(THERE)**新しいhome.warningのエラーを取得します。 - 以下の警告には**(コンテキストコンテキスト、int id、int titleResId、int tex)**が含まれているため、スタジオは静的で非静的なものであり、スタジオはInstanceしかし、地獄私はそれを行う方法を知っている:( –

+0

あなたはまだそれらの関数にパラメータを渡す必要があります... –

答えて

1

問題をもう一度見てから、私は何が起こっているのか理解しています。静的メソッドを間違って呼び出すだけです。

代わりにこれを行います。

public static void weboscio(String args[]) { 
    home something = new something(); 
    something.web(); 
    home.warning(...); 

静的メソッドは、クラスのインスタンスではなく、クラスを介して呼び出されます。

は、ここに例を示します

String x = new String("Hello"); 
x.concat("World"); // non-static 

String y = String.join("Hello", "World"); // static 
+0

ああありがとう!しかし、そこにすべきではない**新しい家(); ** **新しい何かの代わりに**) *? –

+0

静的メソッドはインスタンスを使用しません。インスタンスが不要な場合に使用されます。 "String.valueof(...)"のように、Stringのインスタンスは必要ありませんメソッドを使用します。これは静的メソッドの目的です – Mick

+0

私はこの違いの例をmyに追加しました。回答。 – Mick

関連する問題