【发布时间】:2017-08-24 13:32:05
【问题描述】:
要完成注册应该是三个步骤,在不同的类和方法中从另一个活动中读取所有字符串。 启动项目时出现一些错误!
class1 (RegisterActivity.java)
public class RegisterActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
Next = (Button)findViewById(R.id.next);
Fname = (EditText)findViewById(R.id.fname);
Lname = (EditText)findViewById(R.id.lname);
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fname = Fname.getText().toString().trim();
lname = Lname.getText().toString().trim();
Intent intent = new Intent(RegisterActivity.this,RegisterStepTwoActivity.class);
startActivity(intent);
finish();
}
});
}
}
class2 (RegisterStepTwoActivity)
public class RegisterStepTwoActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_step_two);
overridePendingTransition(R.anim.animation,R.anim.animation2);
Day = (Spinner)findViewById(R.id.spinner_dates);
Month = (Spinner)findViewById(R.id.spinner_months);
Year = (Spinner)findViewById(R.id.spinner_years);
Male = (RadioButton) findViewById(R.id.male);
Female = (RadioButton) findViewById(R.id.female);
RG = (RadioGroup)findViewById(R.id.rg);
Next = (Button)findViewById(R.id.next_s_two);
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
day = Day.getSelectedItem().toString().trim();
month = Month.getSelectedItem().toString().trim();
year = Year.getSelectedItem().toString().trim();
int id = RG.getCheckedRadioButtonId();
Male = (RadioButton)findViewById(id);
Female = (RadioButton)findViewById(id);
gender = ((RadioButton) findViewById(id)).getText().toString().trim();
Male.getText();
Female.getText();
Intent intent = new Intent(RegisterStepTwoActivity.this,RegisterStepThreeActivity.class);
startActivity(intent);
finish();
}
});
}
}
这里,我想调用所有的class3 (RegisterStepThreeActivity)
public class RegisterStepThreeActivity extends AppCompatActivity {
EditText E_mail , Password;
Button Complete;
String email , password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_step_three);
overridePendingTransition(R.anim.animation,R.anim.animation2);
Complete = (Button) findViewById(R.id.complete);
E_mail = (EditText) findViewById(R.id.email);
Password = (EditText) findViewById(R.id.password);
Complete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
email = E_mail.getText().toString().trim();
password = Password.getText().toString().trim();
RegisterActivity reg = new RegisterActivity();
RegisterStepTwoActivity regtwo = new RegisterStepTwoActivity();
if (!regtwo.day.isEmpty() && !regtwo.month.isEmpty() && !regtwo.year.isEmpty() && !regtwo.gender.isEmpty() &&
!reg.fname.equals(reg.Fname) && !reg.lname.isEmpty() && !email.isEmpty() && !password.isEmpty()) {
registerUser(reg.fname, reg.lname, regtwo.day, regtwo.month, regtwo.year, regtwo.gender, email, password);
}
else {
Snackbar.make(v, "Please enter your datalist", Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
}
});
}
方法 registerUser 不能应用所有字符串! 错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
【问题讨论】:
-
根据 JAVA 变量命名约定,变量名应以小写字母开头。
-
@young 正是当我想要注册时,来自另一个类的某些字符串不能应用于方法 registerUser(string.......) 并且 EditText 始终为 null 或为空!
-
您正试图从另一个活动中获取文本。
-
@young 是的,我想要这个先生