2016-04-06 7 views
-1

2つのラジオボタンと1つのボタンがあります。私は、通常のボタンをクリックすると、チェックされているラジオボタンをチェックし、それに基づいてメソッドを実行します。以下は、私が使用しているコードが、アプリがクラッシュ私はボタンをアンドロイドラジオボタンを使用してメソッドを実行する

@Override 
 
    public void onClick(View v) { 
 

 
     radioGroup = (RadioGroup) v.findViewById(R.id.radioPost); 
 
     rdpublic=(RadioButton) v.findViewById(R.id.radioPublic); 
 
     rdprivate=(RadioButton) v.findViewById(R.id.radioPrivate); 
 

 
     radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
 
     { 
 

 
      public void onCheckedChanged(RadioGroup group, int checkedId) 
 
      { 
 

 
       if(rdpublic.isChecked()) 
 
       { 
 
        new PostPublic().execute(); 
 
       } 
 
       else if(rdprivate.isChecked()) 
 
       { 
 
        new PostPrivate().execute; 
 
       } 
 
      } 
 
     }); 
 

 
    }

+0

なぜあなたは)v.findViewById(のようなものをやっていますか?それはボタンの単純なonClickメソッドのようですね。 – Opiatefuchs

+0

私はフラグメントを使用しているので、それを置く必要があります – user2178979

答えて

0

あなたのコード

normalBtn= (Button) findViewById(R.id.Btn); 
    rdpublic=(RadioButton) findViewById(R.id.radioPublic); 
    rdprivate=(RadioButton) findViewById(R.id.radioPrivate); 

    normalBtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      try { 
     if(rdpublic.isChecked()) 
      { 
       new PostPublic().execute(); 
      } 
      else if(rdprivate.isChecked()) 
      { 
       new PostPrivate().execute; 
      } 

      }catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    }); 
+0

ありがとう。出来た!! – user2178979

0

をクリックしたときに、なぜあなたはラジオボタンとグループを見つけるために、ボタンの表示を使用している?ですかv.findViewByIdの代わりにfindViewByIdを使うだけです。

+0

+ PostPrivate()で実行した後に()が不足しています。実行 –

0

.....これを試してみてはあなたのButtonsRadioButtonsが渡さViewVの子Viewsであることを前提としています。これは実際に間違っているので、あなたはNPEを取得しています。

0

これは完全なコードです。

package com.project.bsc.radianstores; 
 

 
import android.widget.RadioGroup.OnCheckedChangeListener; 
 
import android.app.ProgressDialog; 
 
import android.content.SharedPreferences; 
 
import android.os.AsyncTask; 
 
import android.os.Bundle; 
 
import android.preference.PreferenceManager; 
 
import android.support.annotation.Nullable; 
 
import android.support.v4.app.Fragment; 
 
import android.util.Log; 
 
import android.view.LayoutInflater; 
 
import android.view.View; 
 
import android.view.View.OnClickListener; 
 
import android.view.ViewGroup; 
 
import android.widget.AdapterView; 
 
import android.widget.ArrayAdapter; 
 
import android.widget.Button; 
 
import android.widget.EditText; 
 
import android.widget.RadioButton; 
 
import android.widget.RadioGroup; 
 
import android.widget.Spinner; 
 
import android.widget.Toast; 
 

 
import org.apache.http.NameValuePair; 
 
import org.apache.http.message.BasicNameValuePair; 
 
import org.json.JSONException; 
 
import org.json.JSONObject; 
 

 
import java.util.ArrayList; 
 
import java.util.List; 
 

 
public class PostEnquiry extends Fragment implements OnClickListener { 
 

 
    public String[] sItemType; 
 
    public int position =0; 
 

 
    private EditText Message; 
 

 
    JSONParser jsonParser = new JSONParser(); 
 

 
    private ProgressDialog pDialog; 
 

 
    private static final String POST_PRIVATE_URL = "http://192.168.1.102/webservice/privateenquiry.php"; 
 

 
    private static final String POST_PUBLIC_URL = "http://192.168.1.102/webservice/publicenquiry.php"; 
 

 
    private static final String TAG_SUCCESS = "success"; 
 
    private static final String TAG_MESSAGE = "message"; 
 

 
    private Button BtnSave; 
 

 
    private RadioGroup radioGroup; 
 
    private RadioButton rdpublic; 
 
    private RadioButton rdprivate; 
 

 
    @Nullable 
 
    @Override 
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
 
     View v = inflater.inflate(R.layout.enquiry, container, false); 
 

 
     BtnSave = (Button) v.findViewById(R.id.sendEnquiry); 
 
     Message = (EditText)v.findViewById(R.id.MessageBox); 
 
     Spinner spItemType = (Spinner) v.findViewById(R.id.spinnerItemType); 
 
     sItemType = getResources().getStringArray(R.array.ItemType); 
 
     BtnSave.setOnClickListener(this); 
 

 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_spinner_item, sItemType); 
 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
 
     spItemType.setAdapter(dataAdapter); 
 

 

 
     //setting up listener for the spinner 
 
     spItemType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
 
      @Override 
 
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
 
       int index = arg0.getSelectedItemPosition(); 
 
       position = index; 
 
      } 
 

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

 
      } 
 
     }); 
 

 
     return v; 
 

 
    } 
 

 
    @Override 
 
    public void onClick(View v) { 
 

 
     radioGroup = (RadioGroup) v.findViewById(R.id.radioPost); 
 
     rdpublic=(RadioButton) v.findViewById(R.id.radioPublic); 
 
     rdprivate=(RadioButton) v.findViewById(R.id.radioPrivate); 
 

 
     radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
 
     { 
 
      @Override 
 
      public void onCheckedChanged(RadioGroup group, int checkedId) 
 
      { 
 

 
       if(checkedId == rdpublic.getId()) { 
 
        new PostPublic().execute(); 
 
       } 
 

 
       else if (checkedId == rdprivate.getId()) { 
 
        //new PostPrivate().execute(); 
 
       } 
 

 

 
      } 
 
     }); 
 

 
    } 
 

 

 
    class PostPublic extends AsyncTask<String, String, String> { 
 

 
     @Override 
 
     protected void onPreExecute() { 
 
      super.onPreExecute(); 
 
      pDialog = new ProgressDialog(getActivity()); 
 
      pDialog.setMessage("Posting Enquiry..."); 
 
      pDialog.setIndeterminate(false); 
 
      pDialog.setCancelable(true); 
 
      pDialog.show(); 
 
     } 
 

 
     @Override 
 
     protected String doInBackground(String... args) { 
 
      // TODO Auto-generated method stub 
 
      // Check for success tag 
 
      int success; 
 

 
      String strItemType = sItemType[position];; 
 
      String strMessage = Message.getText().toString(); 
 

 

 
      SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
 
      String strUsername = sp.getString("Username", ""); 
 

 

 
      try { 
 
       // Building Parameters 
 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
 
       params.add(new BasicNameValuePair("Username", strUsername)); 
 
       params.add(new BasicNameValuePair("Item_Type", strItemType)); 
 
       params.add(new BasicNameValuePair("Message", strMessage)); 
 

 

 
       Log.d("request!", "starting"); 
 

 
       //Posting user data to script 
 
       JSONObject json = jsonParser.makeHttpRequest(
 
         POST_PUBLIC_URL, "POST", params); 
 

 
       // full json response 
 
       Log.d("Enquiry Posting attempt", json.toString()); 
 

 
       // json success element 
 
       success = json.getInt(TAG_SUCCESS); 
 
       if (success == 1) { 
 
        Log.d("Enquiry Posted Successful!", json.toString()); 
 

 
        return json.getString(TAG_MESSAGE); 
 
       }else{ 
 
        Log.d("Posting Failure!", json.getString(TAG_MESSAGE)); 
 
        return json.getString(TAG_MESSAGE); 
 

 
       } 
 
      } catch (JSONException e) { 
 
       e.printStackTrace(); 
 
      } 
 

 
      return null; 
 

 
     } 
 

 
     protected void onPostExecute(String file_url) { 
 
      // dismiss the dialog once product deleted 
 
      pDialog.dismiss(); 
 
      if (file_url != null) 
 
       Toast.makeText(getActivity(), file_url, Toast.LENGTH_LONG).show(); 
 

 
     } 
 

 
    } 
 

 
}

関連する問題