Android广播类似QT中的信号和槽~~~
界面文件activity_main.xml
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/send1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/textView1" android:text="send 1" /> <Button android:id="@+id/send2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/send1" android:text="send 2" />
MainActivity.java
public class MainActivity extends Activity { public static final String ACTION_1 = "send1~~~"; public static final String ACTION_2 = "send2~~~~~~"; private BroadcastReceiver receiver; private TextView textView = null; private Button button1 = null; private Button button2 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView1); textView.setText(""); button1 = (Button) findViewById(R.id.send1); button2 = (Button) findViewById(R.id.send2); initView(); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String data = intent.getExtras().getString("data"); if (action.equals(ACTION_1)) { textView.setText(""); textView.setText("接收到:\n" + ACTION_1 + "\n1内容是:" + data); } else if (action.equals(ACTION_2)) { textView.setText(""); textView.setText("接收到:\n" + ACTION_2 + "\n2内容是:" + data); } } }; IntentFilter filter = new IntentFilter(); filter.addAction(ACTION_1); filter.addAction(ACTION_2); registerReceiver(receiver, filter); } public void initView() { OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.send1: Intent intent1 = new Intent(ACTION_1); intent1.putExtra("data", "action_01"); sendBroadcast(intent1); break; case R.id.send2: Intent intent2 = new Intent(ACTION_2); intent2.putExtra("data", "action_02"); sendBroadcast(intent2); break; default: break; } } }; button1.setOnClickListener(onClickListener); button2.setOnClickListener(onClickListener); } @Override protected void onStop() { super.onStop(); unregisterReceiver(receiver);//解除注册 } }
时间: 2024-11-29 09:22:43