Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android開發之如何在兩個activity之間傳遞handler_利用broadcast廣播機制

android開發之如何在兩個activity之間傳遞handler_利用broadcast廣播機制

編輯:關於Android編程

 

再重復一遍我遇到的問題,就是在MainActivity裡面打開AnotherActivity去執行一些操作,相應的改變MainActivity裡的一些布局或者執行一些動作,最開始想到的就是把MainActivity的Handler直接傳給AnotherActivity,好像不可行,就有了這篇和上一篇文章。

上一篇方案一是通過重寫application來在兩個activity之間共享Handler的,今天這個方案是通過廣播機制解決本來想要通過傳遞handler來實現的功能,算是Activity之間傳遞Handler問題的變通方案,

 

其實很簡單,就是Broadcast的應用,替換了原來想要通過共享handler解決的思路。

代碼如下:

MainActivity:

package jason.broadcastinsteadofhanlderdemo;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	TextView textView;
	Button sButton;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		textView = (TextView) findViewById(R.id.show);
		sButton = (Button) findViewById(R.id.startAnother);
		sButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				startActivity(new Intent(MainActivity.this,AnotherActivity.class));
			}
		});
		IntentFilter filter = new IntentFilter(AnotherActivity.action);
		registerReceiver(broadcastReceiver, filter);
	}

	BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			textView.setText(intent.getExtras().getString(data));
		}
	};

	protected void onDestroy() {
		unregisterReceiver(broadcastReceiver);
	};
}


AnotherActivity:

package jason.broadcastinsteadofhanlderdemo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class AnotherActivity extends Activity {

	public static final String action = jason.broadcast.action;

	Button update;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.another);
		update = (Button) findViewById(R.id.updateMain);
		update.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(action);
				intent.putExtra(data, yes i am data);
				sendBroadcast(intent);
				finish();
			}
		});
	}
}


代碼地址:http://download.csdn.net/detail/jason0539/6832899

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(轉載請說明出處)

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved