2013-10-04 2 views
0

Я знаю, что в SO есть похожие вопросы, но, к сожалению, ни одна из них не служит моей цели.Доступ к кнопке из другого класса в android

У меня есть кнопка в классе активности, и я хочу дать ее функциональность в другом классе.

Ниже мой HomeActivity код:

// Tile Button 
    tileButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      TileButton tileView = new TileButton(); 
      tileView.tile(); 
     } 
    }); 

А вот TileButton.java класс код:

public class TileButton { 
HomeActivity homeActivity = new HomeActivity(); 
View view = homeActivity.hometabView; 
public void tile(){ 
    if(view.isShown()){ 
     view.setVisibility(View.INVISIBLE); 
    }else{ 
     view.setVisibility(View.VISIBLE); 
    } 
} 
} 

Теперь, когда я нажимаю кнопку Кафель, Исключение нулевого указателя отбрасывается. Ниже приведена запись LogCat.

10-04 10:32:07.833: E/AndroidRuntime(5330): java.lang.NullPointerException 

Как решить эту проблему? Пожалуйста, помогите

+0

Я предлагаю, чтобы сохранить состояние в 'SharedPreference' и получить его в другой деятельности. Сделайте свой вид видимым или невидимым в соответствии со статусом предпочтения. –

ответ

4

Изменение:

public class TileButton { 

public void tile(View view){ 
    if(view.isShown()){ 
     view.setVisibility(View.INVISIBLE); 
    }else{ 
     view.setVisibility(View.VISIBLE); 
    } 
} 
} 

// Tile Button 
    tileButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      TileButton tileView = new TileButton(); 
      tileView.tile(v);// you can pass any view from here 
     } 
    }); 
+0

Большое спасибо, ваше решение отлично работает. – User210282

0

Если вы хотите иметь такую ​​же операцию в обоих действиях, создайте открытый метод в одном из действий и просто вызовите метод onClick обеих кнопок. Но вы не можете контролировать видимость активности, которая даже не отображается на экране.

+0

Оба класса не являются действиями, только HomeActivity - это класс активности. TileButton - это просто класс Java, который выполняет операции скрытия/хранения информации. – User210282

+0

В этом случае вы можете дать команду скрывать/отображать вид, а затем в методе onResume, проверить команду и скрыть/отобразить соответственно. –

Смежные вопросы