2015-01-28 1 views
1

Итак, я новичок в Android Studio, и я не получал никакой помощи через Google. Поэтому моя проблема заключается в том, что я пытаюсь получить доступ к ImageButton из другого класса, а не просто поместить этот метод в MainActivity.Как мне получить доступ к ImageButton в другом классе в Android Studio?

Мой второй вопрос: я делаю это неправильно? Как бы вы решили это без необходимости использовать этот способ изменения изображений в MainActivity, который я делал ранее (он тоже работал, но стал выглядеть грязным).

Так что это Player class:

public class Player extends ActionBarActivity { 

    public Player(){ 
    } 
    public void changeThatPicture(int siffra){ 

     ImageButton imgBtn = (ImageButton) findViewById(R.id.tarning); 
     switch(siffra){ 
      case 1: imgBtn.setImageResource(R.drawable.one); break; 
      case 2: imgBtn.setImageResource(R.drawable.two); break; 
      case 3: imgBtn.setImageResource(R.drawable.three); break; 
      case 4: imgBtn.setImageResource(R.drawable.four); break; 
      case 5: imgBtn.setImageResource(R.drawable.five); break; 
      case 6: imgBtn.setImageResource(R.drawable.six); break; 
     } 
    } 

} 

А вот от моего MainActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Player p1 = new Player(); 
    number = 1 + random.nextInt(6); 
    p1.changeThatPicture(number); 

    playGame(); 
} 
+0

Для правильного извлечения представлений вам понадобится контекст активности. Вы можете передать это в свой класс Player, который затем может загрузить представление и позволить вам манипулировать им. –

+1

Вы также можете просто вернуть нужное значение и установить его там – codeMagic

+0

Здесь есть много чего, с точки зрения программирования. Игроку не нужно расширять ActionBarActivity. См. Мой ответ. –

ответ

1

Вы можете попробовать что-то вроде этого;

От MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageButton btn = (ImageButton) findViewById(R.id.tarning) 
    number = 1 + random.nextInt(6); 
    Player.changeThatPicture(btn, number); 

    playGame(); 
} 

равнине класса, нет необходимости расширять деятельность это только внесет путаницу и беспорядок. Метод сделан статическим, поэтому вам не нужно создавать его экземпляр для использования метода.

public class Player { 

    public static void changeThatPicture(ImageButton imgBtn, int siffra) { 
     switch(siffra){ 
      case 1: imgBtn.setImageResource(R.drawable.one); break; 
      case 2: imgBtn.setImageResource(R.drawable.two); break; 
      case 3: imgBtn.setImageResource(R.drawable.three); break; 
      case 4: imgBtn.setImageResource(R.drawable.four); break; 
      case 5: imgBtn.setImageResource(R.drawable.five); break; 
      case 6: imgBtn.setImageResource(R.drawable.six); break; 
     } 
    } 

}