获取字符串我做了一个应用程序,使EditText上田动态用户的choise,并从中获取文本。 这是我如何设置我的EditText字段: 用户从微调控制器和EditText字段中选择选项出现与他想要的参数。 EditText ID是行号是微调器。 我的代码中的“field”参数在程序开始时已经被分解了。 代码:从EditText上NullPointerException异常错误
public void setTheEditTextFiled(View rowNumber, LinearLayout linearLayout, EditText field, LayoutParams b){
field = new EditText(this);
field.setLayoutParams(b);
field.setId(parametersChoose.getPositionForView(rowNumber));
linearLayout.addView(field);
}
这似乎做工精细,我让我的EditText场,我想他。 现在我想要输入用户输入的文本,并按下“保存”按钮将其放入数据库中。 这是我的代码:
public void onClick(View v) {
switch(v.getId())
{
case R.id.addWorkOut:
{
String exercise;
String weight = "";
String reps = "";
try{
if(findViewById(0) != null)
weight = myWeight.getText().toString();
if(findViewById(1) != null)
reps = myReps.getText().toString();
}
catch (Exception e){
Toast.makeText(this, "bad", Toast.LENGTH_SHORT).show();
}
exercise = addNewExercise.getText().toString();
date = getIntent().getExtras();
if(exercise.equals("") == false)
exercise = addNewExercise.getText().toString();
else
exercise = workOutChoose.getSelectedItem().toString();
DataBaseMain data = new DataBaseMain(this);
data.open();
data.createEntry(date.getString("date"), exercise, weight, reps);
data.close();
break;
}
我也试着这样称呼它:
if((EditText) findViewById(0) != null)
,但其现在的工作。
这里的奇怪的事情,那是用来工作。突然它不要,我不知道为什么,我得到这个错误logcat中:
05-07 20:00:45.159: E/AndroidRuntime(2045): FATAL EXCEPTION: main
05-07 20:00:45.159: E/AndroidRuntime(2045): java.lang.NullPointerException
05-07 20:00:45.159: E/AndroidRuntime(2045): at com.example.workoutlog.AddWorkOutPage.onClick(AddWorkOutPage.java:112)
05-07 20:00:45.159: E/AndroidRuntime(2045): at android.view.View.performClick(View.java:4204)
05-07 20:00:45.159: E/AndroidRuntime(2045): at android.view.View$PerformClick.run(View.java:17355)
05-07 20:00:45.159: E/AndroidRuntime(2045): at android.os.Handler.handleCallback(Handler.java:725)
05-07 20:00:45.159: E/AndroidRuntime(2045): at android.os.Handler.dispatchMessage(Handler.java:92)
05-07 20:00:45.159: E/AndroidRuntime(2045): at android.os.Looper.loop(Looper.java:137)
05-07 20:00:45.159: E/AndroidRuntime(2045): at android.app.ActivityThread.main(ActivityThread.java:5041)
05-07 20:00:45.159: E/AndroidRuntime(2045): at java.lang.reflect.Method.invokeNative(Native Method)
05-07 20:00:45.159: E/AndroidRuntime(2045): at java.lang.reflect.Method.invoke(Method.java:511)
05-07 20:00:45.159: E/AndroidRuntime(2045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-07 20:00:45.159: E/AndroidRuntime(2045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-07 20:00:45.159: E/AndroidRuntime(2045): at dalvik.system.NativeStart.main(Native Method)
此行日志猫(AddWorkOutPage.java:112):
com.example.workoutlog.AddWorkOutPage.onClick(AddWorkOutPage.java:112)
是此行的代码:
weight = myWeight.getText().toString();
一些他如何得到的是ID。
另一件事,我因子评分的存在与领域的EditText我的ID设置的问题。 但我有另一种方法,它通过它自己的ID删除EditText字段,并且此方法正在工作。所以EditText字段的ID似乎很好。
我试图项目 - >干净。 试图删除R.java。 试图安装/解除应用程序。 没有什么帮助。
我检查了我的XML代码我没有duplicare的ID,这是我的XML代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/addWorkOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="save" />
<Button
android:id="@+id/update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="update" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set new Exercise type or choose from the lsit below" />
<EditText
android:id="@+id/newExercise"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
</EditText>
<Spinner
android:id="@+id/workOutChoose"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/parametersChoose"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/test"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
></LinearLayout>
感谢帮助:)
我看不到你在哪里得到'myWeight'。我希望看到一行看起来像'myWeight =(EditText)findViewById(R.id.myWeight);'某处。 – 2013-05-07 20:08:52
你用findViewById(0)表示你的意思是什么? – 2013-05-07 20:12:38
我设置了EditText myWeight;在节目的乞讨中,我没有把它放在这里。现在在XML代码中没有这样的项目,我从java代码中创建它,所以我无法通过findViewById调用他。我使用setTheEditTextFiled方法,我放在我的问题顶部 – tomer 2013-05-07 20:13:04