2017-02-02 20 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 (ЗДЕСЬ) и .warning (ВОТ).

weboscio = OnClick функция

дом = основной Java активность

веб = активность предполагается открыть новый макет

предупреждение = активность предполагается отображать некоторые предупреждение о новой компоновке

+0

'home.warning();' –

+0

Хех я проглядел, но все-таки, почему получение ошибки Iam в новом home.warning ** (ТАМ) **; - потому что предупреждение ниже имеет: ** (контекст контекста, int id, int titleResId, int tex) **, а также он является открытым статическим и нестационарным в одном, а студии не нравится, что его нужно вызывать с помощью экземпляра , но, черт возьми, я знаю, как это сделать :( –

+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

oh спасибо! но не должно быть ** new home(); ** вместо ** new something(); * *? –

+0

Нет, статические методы не используют экземпляр. Они используются, когда экземпляр не нужен. Как и использование «String.valueof (...)», вам не нужен экземпляр String to используйте метод. Это статические методы. – Mick

+0

Я добавил пример разницы с моими ответ. – Mick