アンドロイドからスピンウィジェットを使用しました。このシナリオでは、まずデータベースからスピナーにデータをロードします。これは完全に機能します。私は、データベースからロードされたスピナーに国リストを持っています。私の問題は、ユーザーがその時に国選択のためのスピナーをクリックすると、ユーザーはエラーになります。私はエラーログを添付してください。助けて。前もって感謝します。私の問題は解決されましたが、新しいエラーが発生しました。私のエラーログを参照してください 完全なソースコードスピナー値の選択中にエラーが発生しました
Private class Question2Activity extends AppCompactActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener
{
private static final String PATH_TO_SERVER = "http://192.168.1.103/lab/android_login_example/selectcountries.php";
private static final String SELECT_CITI = "http://192.168.1.103/lab/android_login_example/selectciti.php";
AppCompatSpinner spCity, upcountry;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_question2);
mContext = getApplicationContext();
// Get the activity
mActivity = Question2Activity.this;
// activity_question_detail = (RelativeLayout) findViewById(R.id.activity_question_detail);
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
// Inflate the custom layout/view
View customView = inflater.inflate(R.layout.raw_question2, null);
mPopupWindow = new android.widget.PopupWindow(
customView,
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
mPopupWindow.setAnimationStyle(R.style.PopupAnimation);
if (Build.VERSION.SDK_INT >= 21) {
mPopupWindow.setElevation(5.0f);
}
mPopupWindow.setFocusable(true);
mPopupWindow.update();
spCountry = (AppCompatSpinner) customView.findViewById(R.id.spCountry);
spCity = (AppCompatSpinner) customView.findViewById(R.id.spCity);
btnNext = (Button) customView.findViewById(R.id.btnNext);
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Question2User(stCountry, stCity);
finish();
}
});
requestJsonObject();
requestJsonObjectforCiti();
spCountry.setOnItemSelectedListener(this);
spCity.setOnItemSelectedListener(this);
findViewById(R.id.activity_question_detail).post(new Runnable() {
public void run() {
mPopupWindow.showAtLocation(findViewById(R.id.activity_question_detail), Gravity.CENTER, 0, 0);
}
});
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
if (adapterView.getId() == R.id.spCountry) {
stCountry = spCountry.getSelectedItem().toString();
Log.d("spinner", spCountry.getSelectedItem().toString());
} else if (adapterView.getId() == R.id.spCity) {
stCity = spCity.getSelectedItem().toString();
Log.d("spinner", spCity.getSelectedItem().toString());
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
private void requestJsonObject() {
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, PATH_TO_SERVER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
GsonBuilder builder = new GsonBuilder();
Gson mGson = builder.create();
spinnerData = Arrays.asList(mGson.fromJson(response, DataObject[].class));
//display first question to the user
if (null != spinnerData) {
assert spCountry != null;
adapter.SpinnerAdapter spinnerAdapter = new adapter.SpinnerAdapter(Question2Activity.this, spinnerData);
spCountry.setAdapter(spinnerAdapter);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequest);
}
private void requestJsonObjectforCiti() {
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, SELECT_CITI, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
GsonBuilder builder = new GsonBuilder();
Gson mGson = builder.create();
spinnerData = Arrays.asList(mGson.fromJson(response, DataObject[].class));
//display first question to the user
if (null != spinnerData) {
assert spCity != null;
adapter.SpinnerAdapter spinnerAdapter = new adapter.SpinnerAdapter(Question2Activity.this, spinnerData);
spCity.setAdapter(spinnerAdapter);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(stringRequest);
}
あなたはXMLファイルをint型 foはAdapterView.OnItemSelectedListenerとオーバーライドメソッドでコードが役に立つかもしれ以下の通りである。この方法を、あなたのクラスを実装する必要が
詳細と質問を投稿してくださいUNCまま学習する。 –