人品计算器小案例开发
下面的这个代码主要是学习了在Android中如何开发多个页面和进行页面之间传递数据
主页面开发代码如下:
package com.hailong.basemodel;
import com.hailong.compute.R;
import android.content.Intent;
import android.os.Bundle;
//好像这个v7会创建出二个文件
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
// 创建用户名EditText控件
private EditText et_name;
// 得到我们单选框的组对象
private RadioGroup rg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到我们的关心的控件
et_name = (EditText) findViewById(R.id.et_name);
rg = (RadioGroup) findViewById(R.id.rg);
}
// 实现我们的人品计算器的点击方法
public void compute_click(View v) {
// 拿到我们的输入的性名
String name = et_name.getText().toString().trim();
// 拿到我们的设置的性别的值
int sex = rg.getCheckedRadioButtonId();
// 定义一个值来控制我们选择的性别
int data = 0;
// 进行判断一下我们的选择性别是那个
switch (sex) {
case R.id.rb_female:
// data=1表示选择的是一个女
data = 1;
break;
case R.id.rb_male:
// data=2表示选择的是一个男
data = 2;
break;
case R.id.rb_per:
// data=3表示选择的是一个人妖
data = 3;
break;
}
if(TextUtils.isEmpty(name)|| data==0){
//打个吐司
Toast.makeText(getApplicationContext(),"你的用户名或性别没有选,请你选上!!",0).show();
return ;
}
// 定义一个意图对象
Intent intent = new Intent(this, ResultActivity.class);
//把我们的拿到的数据发送给我们的ResultActivity当中,其中这个putExtra方法中可以传递任何类型给我们的ResultActivity的
//发送name给我们的ResultActivity页面
intent.putExtra("name",name);
//发送sex给我们的ResultActivity页面
intent.putExtra("sex",data);
// **//方式二:但是不幸的是这种方式不可以,我也知道为什么这种不可以,如果有大神知道的欢迎交流**
// //上面的这种方式要写太多的代码了,下面的这种就不那么多代码了
// RadioButton rb_sex=(RadioButton) findViewById(sex);
// //得到这个按键的数据
// String sex_name=rb_sex.getText().toString().trim();
// if (TextUtils.isEmpty(name) || TextUtils.isEmpty(sex_name)) {
// // 打个吐司
// Toast.makeText(getApplicationContext(), "你的用户名或性别没有选,请你选上!!", 0).show();
// return;
// }
//
// // 定义一个意图对象
// Intent intent = new Intent(this, ResultActivity.class);
// // 把我们的拿到的数据发送给我们的ResultActivity当中,其中这个putExtra方法中可以传递任何类型给我们的ResultActivity的
// // 发送name给我们的ResultActivity页面
// intent.putExtra("name", name);
// // 发送sex给我们的ResultActivity页面
// intent.putExtra("sex",sex_name);
// 开启我们的意图对象
startActivity(intent);
}
}
跳转页面开发代码如下:
package com.hailong.basemodel;
import java.io.UnsupportedEncodingException;
import com.hailong.compute.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class ResultActivity extends Activity {
// 用来显示名称的控件
private TextView tv_name;
// 用来显示性别的控件
private TextView tv_sex;
// 用业显示结果的控件
private TextView tv_result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置当前这个页面的内容
setContentView(R.layout.activity_result);
// 拿到我们的想要的控件
tv_name = (TextView) findViewById(R.id.tv_username);
tv_sex = (TextView) findViewById(R.id.tv_sex);
tv_result = (TextView) findViewById(R.id.tv_text);
// 拿到我们的MainActivity发送过来的数据
// 得到让我们的这个页面启动的意图对象
Intent intent = getIntent();
// 得到这个意图发送的数据,这个取数据是根据我们的发送过来的数据类型来取出这个数据
// 拿到我们的发送过来的名字
String name = intent.getStringExtra("name");
// 拿到发送过来的性别 defaultValue表示的是默认值,也就是如果没有数据,就是用这个数据
int sex = intent.getIntExtra("sex", 0);
// String sex=intent.getStringExtra("sex");
byte[] bt=null;
// 然后显示这个名字数据
tv_name.setText(name);
// tv_sex.setText(sex);
// 显示性别数据
try {
switch (sex) {
case 1:
bt=name.getBytes("utf-8");
tv_sex.setText("女");
break;
case 2:
bt=name.getBytes("gbk");
tv_sex.setText("男");
break;
case 3:
bt=name.getBytes("iso-8859-1");
tv_sex.setText("人妖");
break;
default:
Toast.makeText(getApplicationContext(), "你的性别数据传递过程有问题", 1).show();
}
} catch (Exception e) {
e.printStackTrace();
}
//下面开始计算我们的真正的人品代码
//一些市面上的这类软件都是用随机数来做的,但是我们不用这种方式,而是用下面的这种方式
// byte[] bt=name.getBytes();
//计算总的结果
int total=0;
//进行做个与运算就可以
for(byte t:bt){
int number=t&0xff;
total+=number;
}
//把我们的这个值收缩到0-100之间
int result=Math.abs(total%100);
if(result>=90){
tv_result.setText("你的人品相当的好,你不出一年肯定会发大财的!!");
}else if(result>=80&&result<90){
tv_result.setText("你的人品还可以,你不出二年肯定会发大财的!!");
}else if(result>=60 && result<80){
tv_result.setText("你的人品可以,你不出5年肯定会发大财的!!");
}else{
tv_result.setText("你的人品有问题,你不出50年肯定会发大财的!!");
}
}
}