2017-02-02 42 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 

只是把有兩種空隙爲一體的活動,並調用它的按鈕點擊。我搜索了很多,但沒有什麼用處。我也試過:

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

顯然,它僅適用於非靜態空隙..而我也得到了在名.web(在這裏)的錯誤和。警告(這裏)。

weboscio =的onclick功能

= Java主活動

網絡 =活動應該打開新的佈局

警告 =活動應該顯示一些新佈局警告

+0

'home.warning();' –

+0

嘿我忽略了它,不過,爲什麼在新home.warning蔭收到錯誤**(那裏)**; - 因爲下面的警告有:**(Context context,int id,int titleResId,int tex)**並且它在一箇中是公共靜態和非靜態的,而studio不喜歡它需要用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

我添加了一個與我不同的示例回答。 – Mick