我有一个tablelayout,每行有3个字段。
第一个和第二个是文本,它们工作正常,但第三个,是一个微调器,它工作正常,直到我尝试恢复保留的值。
我有这个代码用于从表中读取信息:
TableRow row = (TableRow) tableLayout.getChildAt(i);
TextView a= (TextView) row.getChildAt(0);
TextView b= (TextView) row.getChildAt(1);
Log.d(LOGTAG, (String) a.getText());
Spinner c= (Spinner) row.getChildAt(2);
如果我尝试使用Spinner线,则会失败。我试过,许多不同的代码片段,确实实际上不起作用,因为最后一行总是失败...
我以这种方式创建微调器:
ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add("0%");
spinnerArray.add("25%");
spinnerArray.add("50%");
spinnerArray.add("75%");
spinnerArray.add("100%");
Spinner spinner = new Spinner(home_screen.this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(home_screen.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);
row.addView(spinner);
回答第一个回答,这是输出:
ERROR/AndroidRuntime(5404): FATAL EXCEPTION: main
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.e(Log.java:231)
at com.gps.distance.home_screen.guardar(home_screen.java:217)
at com.gps.distance.home_screen.access$1000(home_screen.java:22)
at com.gps.distance.home_screen$3.onClick(home_screen.java:188)
at android.view.View.performClick(View.java:4204)
at android.view.View$PerformClick.run(View.java:17355)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
首先你必须确保你的微调器有一个唯一的ID,以便你以后可以得到它(通常我建议在xml中定义更多这个但是我不确定你在做什么所以这是不是最佳实践)
//add spinner
Spinner spinner = new Spinner(home_screen.this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(home_screen.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setId(android.R.id.list);
row.addView(spinner);
现在要从我们刚刚添加它的行中获取该微调器,我们使用以下内容。
//to get spinner from table
TableRow row;
Spinner c = (Spinner) row.findViewById(android.R.id.list);
String percentage = (String) c.getSelectedItem();