小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返回到第一个活动中。

posted @ 2016-12-01 17:09  云胡同学  阅读(178)  评论(0)    收藏  举报