2017-02-13 14 views
0

アンドロイドからスピンウィジェットを使用しました。このシナリオでは、まずデータベースからスピナーにデータをロードします。これは完全に機能します。私は、データベースからロードされたスピナーに国リストを持っています。私の問題は、ユーザーがその時に国選択のためのスピナーをクリックすると、ユーザーはエラーになります。私はエラーログを添付してください。助けて。前もって感謝します。私の問題は解決されましたが、新しいエラーが発生しました。私のエラーログを参照してください enter image description here 完全なソースコードスピナー値の選択中にエラーが発生しました

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とオーバーライドメソッドでコードが役に立つかもしれ以下の通りである。この方法を、あなたのクラスを実装する必要が
+0

詳細と質問を投稿してくださいUNCまま学習する。 –

答えて

1

例で
@Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     if(adapterView.getId()==R.id.ueducation) { 
      uqlification = qulification.getSelectedItem().toString(); 
      Log.d("spinner", qulification.getSelectedItem().toString()); 
     } 
     else 
     if(adapterView.getId()==R.id.uocuuaption) { 
     uoccupation=occupation.getSelectedItem().toString(); 
      Log.d("spinner", occupation.getSelectedItem().toString()); 
     } 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 

    } 



    <android.support.v7.widget.AppCompatSpinner 
      android:id="@+id/ueducation" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="@dimen/_5sdp" 
      android:entries="@array/education" 
      android:padding="@dimen/_10sdp"></android.support.v7.widget.AppCompatSpinner> 

     <android.support.v7.widget.AppCompatSpinner 
      android:id="@+id/uocuuaption" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="@dimen/_5sdp" 
      android:entries="@array/ustatus" 
      android:padding="@dimen/_10sdp"></android.support.v7.widget.AppCompatSpinner> 

ルック:

public class User_Detail extends AppCompatActivity implements View.OnClickListener,AdapterView.OnItemSelectedListener { 

    AppCompatSpinner qulification, occupation; 
    String uqlification="Select",uoccupation="Select"; 



    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.user_basic_details); 

     //fetch the spinners view 
     qulification = (AppCompatSpinner) findViewById(R.id.ueducation); 
     occupation = (AppCompatSpinner) findViewById(R.id.uocuuaption); 


     //attac the setItemSelected linstener 
     qulification.setOnItemSelectedListener(this); 
     occupation.setOnItemSelectedListener(this); 

    } 



    } 




    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     if(adapterView.getId()==R.id.ueducation) { 
      uqlification = qulification.getSelectedItem().toString(); 
      Log.d("spinner", qulification.getSelectedItem().toString()); 
     } 
     else 
     if(adapterView.getId()==R.id.uocuuaption) { 
     uoccupation=occupation.getSelectedItem().toString(); 
      Log.d("spinner", occupation.getSelectedItem().toString()); 
     } 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 

    } 
} 
+0

スピナーをonclickに削除します。リスナー –

+0

更新された投稿をご覧ください添付されたスクリーンショットを添付しました。私はドロップダウンに関する問題があります。私がドロップダウンをクリックするとクリックできないので助けてください。前もってありがとう@Mahendra Dabi –

+0

以下のように両方のスピナーにリスナーを適用すると、changeItemListnereであなたが呼ぶようになります qulification.setOnItemSelectedListener(this); occupation.setOnItemSelectedListener(this); –

関連する問題