2015-01-28 3 views
1

안녕하세요, Android Studio에 새 소식을 전했습니다. Google을 통해 도움을 얻지 못했습니다. 그래서 내 문제는 그냥 ImageButton 다른 클래스에서 액세스하는 대신 해당 메서드를 넣으려고합니다. MainActivity.Android Studio에서 다른 클래스의 ImageButton에 액세스하려면 어떻게해야합니까?

두 번째 질문은 내가 잘못하고있는 것입니까? 이전에했던 MainActivity에서 사진을 변경하는 방법을 사용하지 않고도이 문제를 해결할 수 있습니까? (너무 효과적 이었지만 어수선하게 보이기 시작했습니다.)

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에서입니다 :

그래서 이것이 Player class입니다

@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; 
     } 
    } 

}