2014. 9. 29. 19:39
프로그래밍/Android
가끔 액티비티가 아닌 다른 클래스에서 액티비티를 컨트롤 하고 싶을 때가 있습니다. 그럴땐 아래와 같은식으로 처리해주시면 됩니다.
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
Button button1, button2;
TextView textView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
textView1 = (TextView) findViewById(R.id.textView1);
ClickAdapter clickAdapter = new ClickAdapter(this);
button1.setOnClickListener(clickAdapter);
button2.setOnClickListener(clickAdapter);
}
}
위와 같이 다른 클래스로 Context를 넘기시면 되구요.
ClickAdapter.java
import android.content.Context;
import android.view.View;
public class ClickAdapter implements View.OnClickListener{
Context mContext;
public ClickAdapter(Context context){
mContext = context;
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button1:
this.showText();
break;
case R.id.button2:
this.hideText();
break;
}
}
private void hideText() {
((MainActivity) mContext).textView1.setVisibility(View.INVISIBLE);
}
private void showText() {
((MainActivity) mContext).textView1.setVisibility(View.VISIBLE);
}
}
액티비티를 컨트롤하는 클래스에서 생성자에서 Context를 받은 뒤 위의 코드와 같이 처리해주시면 됩니다. 혹시나 궁금하신 분이 있을까 해서 정리겸 올립니다.
