Android 的Application之一 ---- 在不同的类(Activity界面)中进行数据的操作

        有时候我们需要在Activity之外的类中修改Activity中的数据或是UI, 或者是要在自定义的类中要修改其它类中的值。这时候就变的很麻烦!这时候我们就需要一个全局的容器,来存放要共享的数据,就像J2EE中的Session。 当然,Android设计者肯定也考虑到了这一点。进入正题-----> Application(注: 本节只简单介绍一下使用方法,相信天才的码农们举一反三)


使用方法:

        第一、实现自己的Applicaiton

 

public class ApplicationContext extends Application {  
    public static final int FLUSH_MAIN_ACTIVITY=1;  
    private Handler main;  
   
    public void setMainHandler(Handler handler){  
        main=handler;  
    }  
      
    public void flushMain(){
        main.sendEmptyMessage(FLUSH_MAIN_ACTIVITY);  
    }  
  
} 


        第二、在Activity中定义Handler  ,并注册Handler

 

package com.sequel.text;

import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class MainActivity extends Activity {

	private int count = 0;
	
	/** Called when the activity is first created. */

	//定义Handler,  
	Handler flushHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case ApplicationContext.FLUSH_MAIN_ACTIVITY:
				//在这可进行想要的操作
				operat();
				break;
			default:
				break;
			}
			super.handleMessage(msg);
		}
	};

	private ApplicationContext appC;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		appC = (ApplicationContext) getApplication();
		//注册Handler
		appC.setMainHandler(flushHandler);
		
		try {
			Thread.sleep(2000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		startActivity(new Intent(MainActivity.this,SecondActivity.class));//启动另一个Activity
	}
	
	
	public void operat(){
		//.....
		System.out.println(count++);
	}
}


        第三、调用方法----在SecondActivity中进行操作

 

import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SecondActivity extends Activity {

	/** Called when the activity is first created.*/

	private ApplicationContext appC;
	private Button button;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		
		button = (Button) findViewById(R.id.requestButton);
		
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//这就是调用方法
				appC.flushMain();
			}		
				
		});
		appC = (ApplicationContext) getApplication();

	}
}


        第四、千万不要以为这就完事大吉了! 一定要在AndroidManifest.xml中注册你自己定义的Application

 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationContext">


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值