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