从edittext-Android获取文本时出错

时间:2014-05-15 05:44:16

标签: java android android-edittext

我正在创建一个应用程序,它将从用户那里获取输入并将其发送到服务器进行搜索。这是我的两个问题

  1. 从edittext
  2. 获取错误时出错
  3. Toast无效
  4. 这是我的代码

        public class QuickSearch extends Activity {
    
            Button search;
            RadioGroup stones;
            RadioButton single,twin,selected_value;
            EditText to,from,unique_id;
            TextView tv;
            HttpPost httppost;
            StringBuffer buffer;
            HttpResponse response;
            HttpClient httpclient;
            List<NameValuePair> nameValuePairs;
            ProgressDialog dialog = null;
            Intent f1;
            String radiovalue;
            String str_color1,str_color2,str_clarity1, str_clarity2, str_shape1,str_shape2, str_cut1,str_cut2,str_carat1,str_carat2;
            Spinner color1,color2,shape1,shape2,clarity1,clarity2,cut,cut2;
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_quicksearch);
    
                search=(Button)findViewById(R.id.search);
              //  submit=(Button)findViewById(R.id.submit);
                to=(EditText)findViewById(R.id.to);
                from=(EditText)findViewById(R.id.from);
               // unique_id=(EditText)findViewById(R.id.unique_id);
                tv = (TextView)findViewById(R.id.tv);
                stones=(RadioGroup)findViewById(R.id.radioGroup);
                single=(RadioButton)findViewById(R.id.single);
                twin=(RadioButton)findViewById(R.id.twin);
    
    
                f1 = new  Intent(QuickSearch.this,Search_result.class);
    
    
    
    
    
                 color1=(Spinner)findViewById(R.id.color1);
                ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.color1, android.R.layout.simple_spinner_item);
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                color1.setAdapter(adapter);
    
    
                 color2=(Spinner)findViewById(R.id.color2);
                ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this, R.array.color2, android.R.layout.simple_spinner_item);
                adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                color2.setAdapter(adapter2);
    
    
                 shape1=(Spinner)findViewById(R.id.shape);
                ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(this, R.array.shape, android.R.layout.simple_spinner_item);
                adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                shape1.setAdapter(adapter3);
    
    
                 shape2=(Spinner)findViewById(R.id.shape2);
                ArrayAdapter<CharSequence> adapter8 = ArrayAdapter.createFromResource(this, R.array.shape2, android.R.layout.simple_spinner_item);
                adapter8.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                shape2.setAdapter(adapter8);
    
    
    
                 clarity1=(Spinner)findViewById(R.id.clarity1);
                ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(this,
                        R.array.clarity1, android.R.layout.simple_spinner_item);
                adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                clarity1.setAdapter(adapter4);
    
    
    
                 clarity2=(Spinner)findViewById(R.id.clarity2);
                 ArrayAdapter<CharSequence> adapter5 = ArrayAdapter.createFromResource(this,R.array.clarity2, android.R.layout.simple_spinner_item);
                adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                clarity2.setAdapter(adapter5);
    
    
                 cut=(Spinner)findViewById(R.id.cut);
                ArrayAdapter<CharSequence> adapter6 = ArrayAdapter.createFromResource(this,R.array.cut, android.R.layout.simple_spinner_item);
                adapter6.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                cut.setAdapter(adapter6);
    
                 cut2=(Spinner)findViewById(R.id.cut2);
                ArrayAdapter<CharSequence> adapter7 = ArrayAdapter.createFromResource(this,R.array.cut2, android.R.layout.simple_spinner_item);
                adapter7.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                cut2.setAdapter(adapter7);
    
    
    
        /*
                if(stones.getCheckedRadioButtonId()!=-1){
                    int id= stones.getCheckedRadioButtonId();
                    View radioButton = stones.findViewById(id);
                 //   int radioId = radioGroup.indexOfChild(radioButton);
                    RadioButton btn = (RadioButton) stones.getChildAt(radioId);
                    radiovalue = (String) btn.getText();
                }
    
            */
    //--------------------------------getting value on button press------------------    
    
                search.setOnClickListener(new View.OnClickListener() {
                       @Override
                       public void onClick(View view) {
    
    
                           str_color1= color1.getSelectedItem().toString();
                           str_color2= color2.getSelectedItem().toString();
                           str_shape1=shape1.getSelectedItem().toString();
                           str_shape2=shape2.getSelectedItem().toString();
                           str_clarity2=clarity2.getSelectedItem().toString();
    
                           str_clarity1=  clarity1.getSelectedItem().toString();
                           str_cut1=cut.getSelectedItem().toString();
                           str_cut2=cut2.getSelectedItem().toString();
                           str_carat1=to.getText().toString().trim();
                           str_carat2=from.getText().toString().trim();
    
    
                           dialog = ProgressDialog.show(QuickSearch.this, "","Searching...", true);
    
                           int selectedId = stones.getCheckedRadioButtonId();
    
                           // find the radiobutton by returned id
                           selected_value = (RadioButton) findViewById(selectedId);
                           radiovalue= selected_value.getText().toString();
                           if(str_color1=="Color To:" || str_color2=="Color  From:" || str_clarity1=="Color To:" || str_clarity2 =="Color From:"
                                   || str_cut1 == "Cut To:" || str_cut2 == " Cut From:" || str_shape1=="Shape To:" || str_shape2 =="Shape From"
                                   || radiovalue=="" || str_carat1==null || str_carat2==null)
                           {
    
                               Toast.makeText(getApplicationContext(), "Please enter all the field", Toast.LENGTH_SHORT).show();
    
                           }
                           else
                           {
    
    
                           new Thread(new Runnable() {
                               public void run() {
                                   Search();
                               }
                           }).start();
                       }}
                   });
            }
    
            void Search(){
                try{
    
                    httpclient=new DefaultHttpClient();
                    httppost= new HttpPost("http://192.168.43.6/test/search.php"); // make sure the url is correct.
                    //add your data
                    nameValuePairs = new ArrayList<NameValuePair>(2);
                    // Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar,
                    nameValuePairs.add(new BasicNameValuePair("carat1",unique_id.getText().toString().trim()));
                    nameValuePairs.add(new BasicNameValuePair("carat2",unique_id.getText().toString().trim()));
                    nameValuePairs.add(new BasicNameValuePair("color1",unique_id.getText().toString().trim()));
                    nameValuePairs.add(new BasicNameValuePair("color2",unique_id.getText().toString().trim()));
                    nameValuePairs.add(new BasicNameValuePair("shape1",unique_id.getText().toString().trim()));
                    nameValuePairs.add(new BasicNameValuePair("shape2",unique_id.getText().toString().trim()));
                    nameValuePairs.add(new BasicNameValuePair("stones",unique_id.getText().toString().trim()));
    
                    // $Edittext_value = $_POST['Edittext_value'];
    
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    //Execute HTTP Post Request
                    response=httpclient.execute(httppost);
    
                    ResponseHandler<String> responseHandler = new BasicResponseHandler();
                    final String response = httpclient.execute(httppost, responseHandler);
                    System.out.println("Response : " + response);
                    runOnUiThread(new Runnable() {
                        public void run() {
                            tv.setText("Response from PHP : " + response);
                            dialog.dismiss();
                        }
                    });
    
                    if(response.equalsIgnoreCase("Search")){
                        runOnUiThread(new Runnable() {
                            public void run() {
                                Toast.makeText(QuickSearch.this, "Searching Successful", Toast.LENGTH_SHORT).show();
                            }
                        });
    
                       // startActivity(new Intent(QuickSearch.this, LoginScreen.class));
                        //f1.putExtra("unique_id", unique_id.getText());
                        //st/artActivity(f1);
    
    
                    }else{
                        showAlert();
                    }
    
                }catch(Exception e){
                    dialog.dismiss();
                    System.out.println("Exception : " + e.getMessage());
                }
            }
            public void showAlert(){
                QuickSearch.this.runOnUiThread(new Runnable() {
                    public void run() {
                        AlertDialog.Builder builder = new AlertDialog.Builder(QuickSearch.this);
                        builder.setTitle("Searching Error.");
                        builder.setMessage("Problem in Searching. Please try again later")
                                .setCancelable(false)
                                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                    }
                                });
                        AlertDialog alert = builder.create();
                        alert.show();
                    }
                });
            }
    
    
        }
    

    logcat错误

    05-15 11:13:22.327  28644-28932/com.diamond.traders I/System.out﹕ Exception : Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
    

1 个答案:

答案 0 :(得分:2)

您已注释掉初始化unique_id EditText实例的行:

// unique_id=(EditText)findViewById(R.id.unique_id);

所以在打电话时

nameValuePairs.add(new BasicNameValuePair("carat1",unique_id.getText().toString().trim()));

它会引发异常。

正确初始化gui元素以便能够访问它们。