java - 从edittext-Android获取文本出错

标签 java android android-edittext

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

  1. 从编辑文本中获取错误信息时出错
  2. toast 不工作

这是我的代码

    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();
                }
            });
        }


    }

日志错误

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

最佳答案

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

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

所以调用的时候

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

它抛出一个异常。

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

关于java - 从edittext-Android获取文本出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670159/

相关文章:

java - 什么算修改?

java - 在 JNI 代码中抛出异常的最佳方法?

android - 如何在 EditText 中放置按钮

java - 当 EditText 输入为空时 Android 应用程序崩溃

android - EditText - 键盘没有出现在焦点上

java - 获取wav文件的声压级

java - Jsoup提取一组选择器直到到达指定的选择器

android - Android 中 AlarmManager 行为的说明

android - 黑透明和白透明有区别吗?

android - Docker:无法在 ubuntu 16.10 容器中执行挂载命令