小demo
功能:实现一个登陆界面,两个activity,主界面具有登陆名,密码(采用密文),性别,email地址,生日,所在地,,还有两个RadioButton,第二个活动中点击确定返回第一个活动并提示注册成功。
主界面的布局采用LinearLayout 垂直型
密码显然是由用户输入的,采用的是editview,我们需要的密码应该是密文的,所以加一行输入格式是密文。
android:inputType="textPassword"
性别采用RadioGroup实现
<RadioGroup
android:id="@+id/radiogroup"
android:orientation = "horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:id="@+id/radioButton"
android:checkedButton="@+id/radio0"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
android:id="@+id/radioButton2"
/>
</RadioGroup>
多个RadioButton同一时刻只能被选中一个。
horizontal表示两个RadioButton是水平排列的。
email地址限定了格式
android:inputType="textEmailAddress"
生日用spinner下拉栏实现
<Spinner
android:id="@+id/spinner1"
android:layout_width="80dp"
android:spinnerMode="dialog"
android:layout_height="30dp"
android:entries="@array/sheet" />
spinnerMode设置下拉框的样式。
entries设置这个下拉框上面的值使用的是哪个数组,sheet是数组的名字。
在res底下的values新建一个arrays.xml文件,里面写入数据。
<string-array name="sheet">
<item>农历</item>
<item>新历</item>
</string-array>
新建第二个Activity
新建一个xml文件,Java类,然后关联
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
}
注意一定要在AndroidMainfest里注册
<activity android:name=".SecondActivity">
</activity>
实现功能将editview用户输入的内容传递到第二个activity中。
String str1="";
EditText edit1=(EditText)findViewById(R.id.editText);//定义一个EditText的对象
str1=edit1.getText().toString();
首先定义一个字符串str1,定义一个EditText的对象去获取用户输入文本的控件,然后通过一个函数将用户输入的文本赋给str1。
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
显试intent传递。
intent.putExtra("user_name",str1);
将str1的内容通过putExtra绑定到user_name中,第二个活动接收到intent,然后只要与user_name相同,就可以得到str1的值。
startActivityForResult(intent,1);
通过intent启动第二个活动,1是请求码,判断数据来源。
特殊情况,非editview,而是RadioGroup
/* 获取具体性别 */
RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radiogroup);
//首先得到RadioGroup这个控件
RadioButton radioButton = (RadioButton)findViewById
(radioGroup.getCheckedRadioButtonId());
//得到选中的控件
String radioname = radioButton.getText().toString();
//将被选中的控件上的文本转化为字符串赋给radioname
第二个activity
Intent intent = getIntent();
//声明一个Intent对象从上一个活动中获取并赋值
String data1 = intent.getStringExtra("user_name");
//data1得到上一个活动中键值为user_name的字符串
EditText editText=(EditText)findViewById(R.id.s_editText);
//声明一个EditText对象
editText.setText(data1);
//将data1这个值赋给需要的控件上,从而实现不同活动中数据的传递
密文的editview在第二个活动中把android:inputType=”textPassword”删去,用明文显示。
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data_return", "注册成功");
setResult(RESULT_OK,intent);
finish();
点击事件的响应,先把数据存到intent里,绑定在data_return里,然后有一个setResult函数接受两个参数,第一个用于向上一个活动返回处理结果,第二个是把带有数据的intent传到上一个活动里,最后调用finish来销毁这个活动。
主活动里
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
switch (requestCode){
case 1:
if(resultCode == RESULT_OK){
String returnedData = data.getStringExtra
("data_return");
Toast.makeText(MainActivity.this,returnedData,Toast.LENGTH_SHORT).show();
}
break;
default:
}
}
这个onActivityResult函数接受三个参数,第一个是requestCode 即启动活动时候的请求码,第二个参数resultCode即第二个活动返回第一个活动的处理结果,第三个参数是第二个活动中带有data的intent返回到第一个活动中。

浙公网安备 33010602011771号