Android Spinner上的Java NullPointerException
我的Android应用程序上有一个旋转器和两个按钮 微调器是从服务器端脚本动态填充的 上次它可以工作,但我不知道为什么现在我有一个java.NullPointerException问题,我不知道如何修复它,LogCat的日志说我的微调器上有null 首先,这是我在FormPilihLokasiKelompok.class上的完整脚本Android Spinner上的Java NullPointerException,java,android,Java,Android,我的Android应用程序上有一个旋转器和两个按钮 微调器是从服务器端脚本动态填充的 上次它可以工作,但我不知道为什么现在我有一个java.NullPointerException问题,我不知道如何修复它,LogCat的日志说我的微调器上有null 首先,这是我在FormPilihLokasiKelompok.class上的完整脚本 package com.nigmagrid.jm.demo; import java.util.ArrayList; import android.app.Ac
package com.nigmagrid.jm.demo;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
public class FormPilihLokasiKelompok extends Activity {
ArrayList<String> content;
ArrayAdapter<String> content_adapter;
Button btn_save, btn_back;
Context context;
String selected_value, spinner_prompt, toast_failed, url_retrieval;
Spinner spinner;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form_pilih_lokasi_kelompok);
btn_save = (Button) findViewById(R.id.btn_save);
btn_back = (Button) findViewById(R.id.btn_back);
spinner = (Spinner) findViewById(R.id.spinner);
context = FormPilihLokasiKelompok.this;
selected_value = "";
spinner_prompt = "Pilih Lokasi";
toast_failed = "Tidak ada lokasi yang terpilih";
url_retrieval = VarsUrl.getServerAddress()+"get_list.php?table=kelompok_lokasi";
content = new ArrayList<String>();
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
finish();
}
});
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(selected_value.length() > 1){
Intent intent = new Intent(getApplicationContext(), FormPilihLokasiKm.class);
intent.putExtra("content", selected_value);
startActivity(intent);
}else{
Toast.makeText(getApplicationContext(), toast_failed, Toast.LENGTH_SHORT).show();
}
}
});
spinner.setPrompt(spinner_prompt);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String sel_val = spinner.getSelectedItem().toString();
if(sel_val != null || sel_val.length() > 0){
selected_value = spinner.getSelectedItem().toString();
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// do nothing
}
});
new PopulateSpinner().execute(url_retrieval);
}
protected class PopulateSpinner extends AsyncTask<String, Void, String>{
ProgressDialog pd = new ProgressDialog(context);
protected void onPreExecute(){
pd.setMessage("Mengambil data...");
}
@Override
protected String doInBackground(String... arg0) {
try{
String response = CustomHttpClient.excecuteHttpGet(arg0[0]);
String res = response.toString().trim();
return res;
}catch (Exception e){
return e.toString();
}
}
protected void onPostExecute(String res){
String[] datanya = res.split("#", 0);
int jumlah_data = datanya.length;
if(datanya[0].equals("1")){
try{
content.clear();
for(int i = 1; i < jumlah_data; i++){
content.add(datanya[i]);
}
content_adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, content);
content_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(content_adapter);
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Terjadi kesalahan sistem\n"+e.toString(), Toast.LENGTH_SHORT).show();
}
}else{
content.add("Tidak ada data untuk ditampilkan");
}
content_adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, content);
content_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(content_adapter);
pd.dismiss();
}
}
}
该脚本位于第68行:spinner.setPrompt(spinner\u prompt)
我已经将微调器提示更改为普通字符串,如“测试提示”,但它仍然是一样的
所以它一定是旋转器(cmiiw),我不知道应该在哪里修理它
有人知道怎么修吗?
谢谢
更新
这是我的布局
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:text="Lokasi"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spinner"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_save"
android:text="Lanjutkan"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_back"
android:text="Kembali"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
您的微调器为空,这只能意味着一件事:微调器为空 您是否调试到引发异常的那一行,以验证微调器是否为null
调试时,在这一行:
spinner=(spinner)findViewById(R.id.spinner)代码>-->之后微调器是否仍然为空?如果是,则可能是R.id.spinner拼写错误,或者在您使用的视图中不存在。请确保在布局xml文件中确实使用正确的id定义了微调器。您可能意外地修改了布局。此外,您的布局可能有多个文件夹(例如布局和布局地)。在横向中,xml将从后一个文件夹加载。因此,您的代码可以在纵向模式下工作,但不能在横向模式下工作。也许您需要重新生成R.java文件。。。使用eclipse,转到“Project->Clean”并选择您的项目。然后再次构建您的项目。也许您甚至需要在这些步骤中重新启动eclipse
我曾经遇到过这样的问题,之前它工作正常,但在我做了一些不相关的事情后突然停止工作 似乎微调器为空,而不是提示。我可以请你分享你的“form_pilih_lokasi_kelompok.xml”代码吗?所以只需对第68行进行注释,您仍然会在第69行得到异常。这里的关键是你提到了“上次它起作用了”。当您没有更改代码中的任何内容时,如果您的程序以不同的方式运行,则可能不是代码。(这种情况也有例外,主要是当你有线程时,你会遇到一些奇怪的错误,你无法一致地重现。但是在这种情况下,由于是android视图,首先要检查的合乎逻辑的事情是清理你的代码)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:text="Lokasi"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Spinner
android:id="@+id/spinner"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_save"
android:text="Lanjutkan"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_back"
android:text="Kembali"
android:padding="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>