블로그 이미지
흰색앵초

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2014. 9. 29. 19:39 프로그래밍/Android
가끔 액티비티가 아닌 다른 클래스에서 액티비티를 컨트롤 하고 싶을 때가 있습니다. 그럴땐 아래와 같은식으로 처리해주시면 됩니다.

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

posted by 흰색앵초