初识android--android中按钮事件的绑定和两个activity的数据传递

1.如何绑定android中一个按钮的事件

  首先通过findViewById()这个方法得到这个按钮

Button sub = (Button)findViewById(R.id.sub);

我们可以通过这个方法绑定这个按钮的事件,可以使用内部类的方式,如:

sub.setOnClickListener(new View.OnClickListener(){

     public void onClick(View v) {

           //触发事件所要执行的内容

     }

});

 

我们还可以这样写: 

  //事件
    private Button.OnClickListener onclick = new Button.OnClickListener() {
		public void onClick(View v) {
			new AlertDialog.Builder(ComputerActivity.this)
			.setTitle("提示")
			.setMessage("计算结果为:"+(Double.valueOf(num1.getText().toString())+Double.valueOf(num2.getText().toString())))
			.setNegativeButton("取消", null)
			.setPositiveButton("确定", null)
			.setIcon(android.R.drawable.ic_menu_info_details)
			.show();
			result.setText("结果:"+(Double.valueOf(num1.getText().toString())+Double.valueOf(num2.getText().toString())));
		}
	};


 将这个事件写成一个方法,一个独立的方法,如果要绑定这个事件,使用sub.setOnClickListener(onclick);这样同样可以进行事件的绑定,那么上面我们是要在点击这个按钮的时候弹出一个消息框,那在android中弹出一个消息框怎么写呢?

new AlertDialog.Builder(ComputerActivity.this)
			.setTitle("提示")
			.setMessage("计算结果为:"+(Double.valueOf(num1.getText().toString())+Double.valueOf(num2.getText().toString())))
			.setNegativeButton("取消", null)
			.setPositiveButton("确定", null)
			.setIcon(android.R.drawable.ic_menu_info_details)
			.show();

只要这样就搞定了,只要有过一点点的编程经验的人都知道上面写的方法是什么意思了,比如,setTitle()这个方法是用来干嘛的,是用来设置这个消息框的标题,那不用说,setMassege()就是消息框显示的内容了;

2.如何从一个activity跳转到另外一个activity,并且在两个activity传递数据?

新建两个activity,两个不同的activity,下面所说两个activity分别指:ComputerActivity.java、AboutComputer.java

这两个activity有不同的UI设计和内容,现在要从ComputerActivity中跳转到AboutComputer,也就是从一个页面跳转到另外一个页面,并且要传递一些数据过去,改如何实现呢?

首先我们看一下第一个activity

package com.android;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class ComputerActivity extends Activity {
	private Button sub;
	private EditText num1;
	private EditText num2;
	private TextView result;
	private static final int Menu_About = 2;
	private static final int Menu_Exit =1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_computer);
        init();
        sub.setOnClickListener(onclick);
		
    }
    //初始化参数
    private void init(){
    	 num1 = (EditText)findViewById(R.id.num1);
         num2 = (EditText)findViewById(R.id.num2);
         sub = (Button)findViewById(R.id.sub);
         result = (TextView)findViewById(R.id.result);
	}
    //事件
    private Button.OnClickListener onclick = new Button.OnClickListener() {
		public void onClick(View v) {
			new AlertDialog.Builder(ComputerActivity.this)
			.setTitle("提示")
			.setMessage("计算结果为:"+(Double.valueOf(num1.getText().toString())+Double.valueOf(num2.getText().toString())))
			.setNegativeButton("取消", null)
			.setPositiveButton("确定", null)
			.setIcon(android.R.drawable.ic_menu_info_details)
			.show();
			result.setText("结果:"+(Double.valueOf(num1.getText().toString())+Double.valueOf(num2.getText().toString())));
		}
	};
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
//        getMenuInflater().inflate(R.menu.activity_computer, menu);
        menu.add(0, Menu_About, 0, "关于我 们");
        menu.add(0, Menu_Exit, 0, "退出");
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch(item.getItemId()){
	    	case Menu_About:
	    		showDialog();
	    		break;
	    	case Menu_Exit:
	    		finish();
	    		break;
    	}
    	return super.onOptionsItemSelected(item);
    }
    public void showDialog(){
//    	new AlertDialog.Builder(ComputerActivity.this).setTitle("关于我们").setMessage("这是一款神奇的计算器").setNegativeButton("取消", null).show();
    	Intent in = new Intent();
    	in.setClass(ComputerActivity.this, AboutComputer.class);
    	in.putExtra("sorut", "终于到了,我从首页那边过来的。");
    	startActivity(in);
    }
}


第二个activity

 

package com.android;

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

public class AboutComputer extends Activity {
	private TextView text;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.about);
		text = (TextView)findViewById(R.id.aboutIntent);
		Bundle bd = this.getIntent().getExtras();
		String sorut = bd.getString("sorut");
		text.setText(sorut);
	}
}

两个页面之间的跳转涉及到一个内容就是,Intent,是android的组件之一,主要就是用来动作之间数据的传递和联网数据打开网页所使用的;

那么我们要跳转到另一个activity那就得实现一个Intent,

Intent in = new Intent();

实例之后,那么我们怎么告诉它要从哪来跳转到哪来去呢?

in.setClass(ComputerActivity.this, AboutComputer.class);

这个设置的就是从本页面(activity)跳转到AboutComputer这个activity,那如何传递数据呢?

in.putExtra("sorut", "终于到了,我从首页那边过来的。");使用这个方法就能将数据传递过去,这个方法是Key,Value的方式进行保存的,前面是Key,后面是Value,那么我在第二个activity取值的时候就是根据这里传递过去的Key,去取值的,就像一个Map集合,所以Key必须是唯一的。

然后启动第二个activity,startActivity(in);并且将Intent传进去,那第二个activity该做些什么呢?我们传给它的东西,它就得接收,那如何接收从别的地方传递过来的值呢?

Bundle bd = this.getIntent().getExtras();

使用这个对象就能获取到Intent中传递过来的值,根据保存的时候的Key进行获取

String sorut = bd.getString("sorut");

那么,这样就完成了两个activity之间的跳转和数据传递了;

当我们点击关于我们的时候跳转到第二个activity并将一些数据传递过去

那么,“终于到了,我是从首页那边过来的”就是我们传递过来的数据。

 

两个activity之间跳转需要注意的问题

新建一个activity之后必须在AndroidManifest.xml中添加一个activity的节点,指定绑定哪个类比如:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值