您的位置:首页 > 移动开发 > Android开发

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

2012-11-01 17:35 696 查看

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的节点,指定绑定哪个类比如:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: