我正在尝试制作一个注册表单,其中所有值都保存在服务器上,但我不知道如何将单选按钮的值和切换选项按钮的值发送到服务器。 我尝试为单选按钮实现此功能,但是当此活动打开时,它仅显示单选按钮值一次。请告诉我单选按钮和开关的正确方法吗?
package com.example.zeba.broccoli;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Switch;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class RegistrationForm extends AppCompatActivity {
EditText fn,ln,mb,em,pw,cpw,dob,gen;
Switch sw;
RadioGroup male,feml;
Switch swth;
private ProgressDialog pDialog;
private static String url_create_book = "http://cloud.....com/broccoli/creatinfo.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
JSONParser jsonParser = new JSONParser();
private int serverResponseCode = 0;
Context c;
int i=0;
Button sub;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration_form);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fn=(EditText)findViewById(R.id.fnm) ;
ln=(EditText)findViewById(R.id.lnm) ;
mb=(EditText)findViewById(R.id.mobile) ;
em=(EditText)findViewById(R.id.email) ;
pw=(EditText)findViewById(R.id.pass) ;
cpw=(EditText)findViewById(R.id.cpass) ;
RadioButton male=(RadioButton)findViewById(R.id.rgm) ;
RadioButton feml=(RadioButton)findViewById(R.id.rgf) ;
Switch swth=(Switch)findViewById(R.id.mySwitch) ;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
sub=(Button)findViewById(R.id.sub2);
addListenerOnButton();
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new CreateNewProduct().execute();
// startActivity(new Intent(RegistrationForm.this, Home.class));
}
});
}
public void addListenerOnButton() {
RadioGroup rgrp=(RadioGroup)findViewById(R.id.rg);
RadioButton radioButton;
// get selected radio button from radioGroup
int selectedId = rgrp.getCheckedRadioButtonId();
// find the radiobutton by returned id
radioButton = (RadioButton) findViewById(selectedId);
Toast.makeText(RegistrationForm.this,
radioButton.getText(), Toast.LENGTH_SHORT).show();
}
class CreateNewProduct extends AsyncTask<String, String, String> {
private String fname;
private String lname;
private String email;
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(RegistrationForm.this);
pDialog.setMessage("Creating books..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
fname = fn.getText().toString();
lname = ln.getText().toString();
email = em.getText().toString();
}
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("First_Name", fname));
params.add(new BasicNameValuePair("Last_Name",lname));
params.add(new BasicNameValuePair("email", email));
// getting JSON Object
// Note that create product url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_book,
"POST", params);
// check log cat fro response
Log.d("Create Response", json.toString());
// check for success tag
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully created product
Intent i = new Intent(getApplicationContext(), Login.class);
startActivity(i);
// closing this screen
finish();
} else {
// failed to create product
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.zeba.broccoli.Login">
<!-- Registration Form -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dip"
android:orientation="vertical"
android:layout_marginTop="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true">
<!-- Full Name Label -->
<EditText android:id="@+id/fnm"
android:hint="First Name"
android:layout_width="fill_parent"
android:background="@drawable/rounded_edittext"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:layout_marginTop="30dp"
android:layout_marginBottom="20dip"/>
<EditText android:id="@+id/lnm"
android:hint="Last Name"
android:layout_width="fill_parent"
android:background="@drawable/rounded_edittext"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:layout_marginBottom="20dip"/>
<EditText android:id="@+id/mobile"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:background="@drawable/rounded_edittext"
android:hint="Mobile Number"
android:layout_marginBottom="20dip"/>
<!-- Password Label -->
<EditText android:id="@+id/email"
android:layout_width="fill_parent"
android:hint="Email"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:background="@drawable/rounded_edittext"
android:layout_marginBottom="20dip"/>
<EditText android:id="@+id/pass"
android:layout_width="fill_parent"
android:hint="password"
android:inputType="textPassword"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:background="@drawable/rounded_edittext"
android:layout_marginBottom="20dip"/>
<!-- Register Button -->
<EditText android:id="@+id/cpass"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:inputType="textPassword"
android:background="@drawable/rounded_edittext"
android:hint="Confirm password"
android:layout_marginBottom="20dip"/>
<EditText android:id="@+id/dob"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:paddingLeft="5dp"
android:background="@drawable/rounded_edittext"
android:hint="Date of Birth(Optional)"
android:layout_marginBottom="20dip"/>
<!-- Register Button -->
<!-- Link to Login Screen -->
<TextView
android:id="@+id/gen"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:text="Gender"
android:textSize="18dp"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
>
<RadioGroup
android:id="@+id/rg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/rgm"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:checked="true"
android:layout_weight="1"
android:textSize="14dp"
android:text="Male"
/>
<RadioButton
android:id="@+id/rgf"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:checked="false"
android:layout_weight="1"
android:textSize="14dp"
android:text="Female"
/>
</RadioGroup>
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
android:background="#c0c0c0"/>
<TextView android:id="@+id/rupdates"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:layout_marginBottom="20dip"
android:text="Receive updates on offers, promotions and discounts"
android:gravity="center"
android:textSize="20dip"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:padding="5dp">
<TextView android:id="@+id/sms"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:text="Subscribe to sms"
android:textSize="20dip"
/>
<Switch
android:id="@+id/mySwitch"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true" />
<Button
android:id="@+id/sub2"
style="?android:textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:text="Submit"
android:background="@drawable/mybutton"
android:textColor="#fff"
android:textStyle="bold"
android:elevation="0dp" />
</RelativeLayout>
</LinearLayout>
<!-- Registration Form Ends -->
</ScrollView>
答案 0 :(得分:0)
您可以从OnCheckedChangedListener
rgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
RadioButton rb=(RadioButton)findViewById(checkedId);
Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show();
}
});
答案 1 :(得分:0)
尝试一下这个单选按钮它对我有用。
radio_button_value1 = ((RadioButton) findViewById(radioGroup1.getCheckedRadioButtonId())).getText().toString();
上面的代码是获取单选按钮的值。
替换您的此代码
// get selected radio button from radioGroup
int selectedId = rgrp.getCheckedRadioButtonId();
使用此代码和测试
// get selected radio button from radioGroup
int selectedId = rgrp.getCheckedRadioButtonId().getText().toString();
希望这个更新的代码可以帮助您。您只需要替换并检查
答案 2 :(得分:0)
添加全局String变量gender和boolean变量switchValue。
String gender="Male" ;
boolean switchValue = false ;
RadioGroupListener方法
public void addListenerOnButton() {
RadioGroup rgrp=(RadioGroup)findViewById(R.id.rg);
rgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if(i==R.id.rgm){
gender="Male" ;
}else{
gender="Female";
}
}
});
Toast.makeText(RegistrationForm.this,
radioButton.getText(), Toast.LENGTH_SHORT).show();
}
获取开关状态
switchValue = swth.isChecked();
答案 3 :(得分:-1)
我自己的回答只需要在按钮内使用该代码:
public void onClick(View v) {
RadioGroup rgrp=(RadioGroup)findViewById(R.id.rg);
RadioButton radioButton;
int selectedId = rgrp.getCheckedRadioButtonId();
// find the radiobutton by returned id
radioButton = (RadioButton) findViewById(selectedId);
Toast.makeText(RegistrationForm.this,
radioButton.getText(), Toast.LENGTH_SHORT).show();