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를 받은 뒤 위의 코드와 같이 처리해주시면 됩니다. 혹시나 궁금하신 분이 있을까 해서 정리겸 올립니다.