Androidカスタムコントロールにイベントを追加

3928 ワード

1)記事の概要
カスタムコントロールを作成し、カスタムイベントを追加
ユーザーがカスタムコントロールの「テスト」ボタンをクリックすると、ボタンカスタムイベントがトリガーされます.
2)カスタムコントロールのレイアウトコードとしてlayout(activity_custom.xml)を定義します.


    

        
    

    
3)接下来写一个类(CustomUserControl.java)继承LinearLayout,导入刚刚的布局,添加自定义事件并通过单击“测试按钮”触发自定义事件
package com.example.androidtest2;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class CustomUserControl extends LinearLayout{
	
	/*    */
	public interface IMyClick{
		public void onMyClick(String str);
	}
	/*       */
	IMyClick iMyClick=null;
	/*     */
	public void setOnMyClickListener(IMyClick _iMyClick){
		iMyClick=_iMyClick;
	}
	private Button button1=null;
	private EditText editText1=null;
	public CustomUserControl(Context context){
		super(context);
	}
	public CustomUserControl(Context context, AttributeSet attr){
		super(context, attr);
		LayoutInflater layoutInflater=
				(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		layoutInflater.inflate(R.layout.activity_custom, this);
		editText1=(EditText)findViewById(R.id.editText1);
		/*         */
		button1=(Button)findViewById(R.id.button1);
		button1.setOnClickListener(new Button.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				/*        editText1  */
				iMyClick.onMyClick(editText1.getText().toString());
			}
		});
	}
	/* Button      */
	public void setButtonText(String text){
		button1.setText(text);
	}
	
}
)フロント(activity_main.xml)は、カスタムコントロールコードを次のように呼び出します.


    
    

    

)バックグラウンド(MainActivity.java)は、カスタムイベントコードを次のようにトリガする.
package com.example.androidtest2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

	private CustomUserControl customUserControl1=null; 
	private TextView textView1=null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		textView1=(TextView)findViewById(R.id.textView1);
        customUserControl1=(CustomUserControl)findViewById(R.id.customUserControl1);
        customUserControl1.setButtonText("  ");
        customUserControl1.setOnMyClickListener(new CustomUserControl.IMyClick() {
			
			@Override
			public void onMyClick(String str) {
				textView1.setText(str);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}