Java 微调器在调用entries值时抛出NullPointerException
我的Java 微调器在调用entries值时抛出NullPointerException,java,android,spinner,Java,Android,Spinner,我的操作栏中有一个微调器,我想在选择一个并将其转换为字符串时获取微调器中条目的值。每次启动活动时,它都会发出NullPointerException。我该如何解决这个问题 我已经阅读了许多指南和问题,但我找不到任何更简单和接近我的情况。这是代码 spinner.xml 以下是logcat错误: 02-16 14:10:29.784: E/AndroidRuntime(29837): FATAL EXCEPTION: main 02-16 14:10:29.784: E/AndroidRuntim
操作栏中有一个微调器
,我想在选择一个并将其转换为字符串时获取微调器
中条目的值。每次启动活动
时,它都会发出NullPointerException
。我该如何解决这个问题
我已经阅读了许多指南和问题,但我找不到任何更简单和接近我的情况。这是代码
spinner.xml
以下是logcat错误:
02-16 14:10:29.784: E/AndroidRuntime(29837): FATAL EXCEPTION: main
02-16 14:10:29.784: E/AndroidRuntime(29837): Process: test.com.classmanagertest, PID: 29837
02-16 14:10:29.784: E/AndroidRuntime(29837): java.lang.RuntimeException: Unable to start activity ComponentInfo{test.com.classmanagertest/test.com.classmanagertest.ClassViewStudents}: java.lang.NullPointerException
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.access$800(ActivityThread.java:139)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.os.Handler.dispatchMessage(Handler.java:102)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.os.Looper.loop(Looper.java:149)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.main(ActivityThread.java:5257)
02-16 14:10:29.784: E/AndroidRuntime(29837): at java.lang.reflect.Method.invokeNative(Native Method)
02-16 14:10:29.784: E/AndroidRuntime(29837): at java.lang.reflect.Method.invoke(Method.java:515)
02-16 14:10:29.784: E/AndroidRuntime(29837): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-16 14:10:29.784: E/AndroidRuntime(29837): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
02-16 14:10:29.784: E/AndroidRuntime(29837): at dalvik.system.NativeStart.main(Native Method)
02-16 14:10:29.784: E/AndroidRuntime(29837): Caused by: java.lang.NullPointerException
02-16 14:10:29.784: E/AndroidRuntime(29837): at test.com.classmanagertest.ClassViewStudents.onCreate(ClassViewStudents.java:43)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.Activity.performCreate(Activity.java:5411)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
02-16 14:10:29.784: E/AndroidRuntime(29837): ... 11 more
首先检查微调器是否包含值。如果它没有值,则必须将数组放入微调器中
用这条线
String[] mTestArray = getResources().getStringArray(R.array.pmf);
SpinnerPMF.setAdapter(new ArrayAdapter<String>(context,android.R.layout.sipmle_spinner_item,mTestArray))
这条线
我希望这对你有帮助
我的ActionBar中有一个微调器,我想得到
选择一个微调器并将其转换为字符串时微调器中的条目
如果微调器位于ActionBar
内,则使用onCreateOptions菜单
设置所选值:
private String SpinnerSelectedValue="";
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_classviewstudents, menu);
MenuItem item = menu.findItem(R.id.AddGrades);
SpinnerPMF = (Spinner)item.getActionView();
SpinnerPMF.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView,
int position, long id) {
SpinnerSelectedValue=parentView.getItemAtPosition(position).toString();
}
});
return true;
}
private String spinner selectedvalue=“”;
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气机。充气(R.menu.menu\u classview学生,菜单);
MenuItem=menu.findItem(R.id.AddGrades);
SpinnerPMF=(微调器)项。getActionView();
SpinnerPMF.setOnItemSelectedListener(新的OnItemSelectedListener()){
@凌驾
已选择公共视图(AdapterView父视图、View selectedItemView、,
内部位置,长id){
SpinnerSelectedValue=parentView.getItemAtPosition(位置).toString();
}
});
返回true;
}
现在使用SpinnerSelectedValue
在单击表格行时获取所选值。指示第43行@ClassViewStudents
,postonCreate
方法too@Kreyah:ClassViewStudents.java中的行号43
是什么?@shayanpourvatan:spinnervalue=SpinnerPMF.getSelectedItem().toString();是第43行,添加到create@ρцσρѕρєK:看看上面的评论。@Kreyah:亲爱的,很简单,你在setContentView
中传递了错误的布局,因为微调器在菜单\u classviewstudents
布局中,但是你在setContentView
中传递了类视图喷丝头PMF=(喷丝头)findViewById(R.id.喷丝头术语);父项中仍然存在相同的错误(空指针异常)。getItemAtPosition表示错误无法解析符号。@Kreyah:使用parentView
而不是parent
我仍然收到空指针异常错误。第126行为SpinnerPMF=(Spinner)项。getActionView()@Kreyah:changeMenuItem=menu.findItem(R.id.SpinnerTerms)
toMenuItem item=menu.findItem(R.id.AddGrades)代码>它正在工作!最后这段代码很简单,但我发现很难对它进行研究。谢谢你的努力!
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.classes_view);
SpinnerPMF = (Spinner) findViewById(R.id.SpinnerTerms);
spinnervalue = SpinnerPMF.getItemAtPosition(SpinnerPMF.getSelectedItemPosition()).toString();
db = openOrCreateDatabase("ClassManager", MODE_WORLD_WRITEABLE, null);
reciever = getIntent().getStringExtra("sender");
Cursor c = db.rawQuery("SELECT * FROM '" + reciever + "'", null);
int count= c.getCount();
c.moveToFirst();
TableLayout tableLayout = new TableLayout(getApplicationContext());
tableLayout.setVerticalScrollBarEnabled(true);
tableLayout.setHorizontalScrollBarEnabled(true);
RelativeLayout rl=(RelativeLayout)findViewById(R.id.layout3);
ScrollView sv = new ScrollView(this);
sv.setHorizontalScrollBarEnabled(true);
sv.addView(tableLayout);
rl.addView(sv, new WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT));
for (Integer j = 0; j < count; j++)
{
tableRow = new TableRow(getApplicationContext());
textView1 = new TextView(getApplicationContext());
textView1.setText(c.getString(c.getColumnIndex("StudentID")));
textView1.setPadding(20, 20, 20, 20);
textView1.setTextColor(getResources().getColor(R.color.redactionbar));
textView1.setTextSize(TypedValue.COMPLEX_UNIT_DIP,25);
textView1.setTypeface(null, Typeface.BOLD);
tableRow.addView(textView1);
final TableRow finalTableRow = tableRow;
textView = new TextView(getApplicationContext());
textView.setText(c.getString(c.getColumnIndex("LastName")));
textView.setPadding(20, 20, 20, 20);
textView.setTextColor(getResources().getColor(R.color.redactionbar));
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP,25);
textView.setTypeface(null, Typeface.BOLD);
tableRow.addView(textView);
tableLayout.addView(tableRow);
tableRow.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Toast toast = Toast.makeText(getApplicationContext(), spinnervalue, Toast.LENGTH_SHORT);
toast.show();
/*
if(SpinnerValue == "Prelim")
{
Toast toast = Toast.makeText(getApplicationContext(), "Prelim Selected", Toast.LENGTH_SHORT);
toast.show();
}
else if (SpinnerValue == "Midterm")
{
Toast toast = Toast.makeText(getApplicationContext(), "Midterm Selected", Toast.LENGTH_SHORT);
toast.show();
}
else if (SpinnerValue == "Finals")
{
Toast toast = Toast.makeText(getApplicationContext(), "Finals Selected", Toast.LENGTH_SHORT);
toast.show();
}
*/
}
});
c.moveToNext() ;
}
rl.requestLayout();
db.close();
}
02-16 14:10:29.784: E/AndroidRuntime(29837): FATAL EXCEPTION: main
02-16 14:10:29.784: E/AndroidRuntime(29837): Process: test.com.classmanagertest, PID: 29837
02-16 14:10:29.784: E/AndroidRuntime(29837): java.lang.RuntimeException: Unable to start activity ComponentInfo{test.com.classmanagertest/test.com.classmanagertest.ClassViewStudents}: java.lang.NullPointerException
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2318)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.access$800(ActivityThread.java:139)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.os.Handler.dispatchMessage(Handler.java:102)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.os.Looper.loop(Looper.java:149)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.main(ActivityThread.java:5257)
02-16 14:10:29.784: E/AndroidRuntime(29837): at java.lang.reflect.Method.invokeNative(Native Method)
02-16 14:10:29.784: E/AndroidRuntime(29837): at java.lang.reflect.Method.invoke(Method.java:515)
02-16 14:10:29.784: E/AndroidRuntime(29837): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-16 14:10:29.784: E/AndroidRuntime(29837): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
02-16 14:10:29.784: E/AndroidRuntime(29837): at dalvik.system.NativeStart.main(Native Method)
02-16 14:10:29.784: E/AndroidRuntime(29837): Caused by: java.lang.NullPointerException
02-16 14:10:29.784: E/AndroidRuntime(29837): at test.com.classmanagertest.ClassViewStudents.onCreate(ClassViewStudents.java:43)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.Activity.performCreate(Activity.java:5411)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-16 14:10:29.784: E/AndroidRuntime(29837): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
02-16 14:10:29.784: E/AndroidRuntime(29837): ... 11 more
String[] mTestArray = getResources().getStringArray(R.array.pmf);
SpinnerPMF.setAdapter(new ArrayAdapter<String>(context,android.R.layout.sipmle_spinner_item,mTestArray))
SpinnerPMF = (Spinner) findViewById(R.id.SpinnerTerms);
private String SpinnerSelectedValue="";
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_classviewstudents, menu);
MenuItem item = menu.findItem(R.id.AddGrades);
SpinnerPMF = (Spinner)item.getActionView();
SpinnerPMF.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView,
int position, long id) {
SpinnerSelectedValue=parentView.getItemAtPosition(position).toString();
}
});
return true;
}