按钮无法按预期在我的Android应用中运行

时间:2016-04-22 13:55:34

标签: java android

我是Android编程的新手,我正在尝试使用PHP和JSON将文本从我的Android应用程序中的两个editText字段发送到raspberry pi。 一切都工作正常,数据可以在数据库中查看,但唯一的问题是,当我点击我的应用程序中的SEND按钮时,它什么也没做。但是,当我点击SEND按钮附近的任何地方时,它会发送数据。我使用了activity_main.xml中定义的布局文件中的onClick方法。 这是我的MainActivity.java代码:

    public class MainActivity extends AppCompatActivity {

    private ProgressDialog pDialog;

    JSONParser jsonParser = new JSONParser();

    EditText editText;
    EditText editText2;
    Button button;
    private View view;

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

        editText = (EditText) findViewById(R.id.name);
        editText2 = (EditText) findViewById(R.id.partNumber);
        button = (Button) findViewById(R.id.send);
    }

    public void Send(View view) {
        this.view = view;
        new Create_Part().execute();
    }

    class Create_Part extends AsyncTask<String, String, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Sending part to the database...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @SuppressWarnings("WrongThread")
        @Override
        protected String doInBackground(String... args) {
            String String_name = editText.getText().toString();
            String Int_Part = editText2.getText().toString();

            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("Name", String_name));
            params.add(new BasicNameValuePair("part_nr", Int_Part));

            JSONObject json = jsonParser.makeHttpRequest("http://192.168.2.1/db_create.php", "POST", params);

            try {
                int success = json.getInt("success");

                if (success == 1) {
                    finish();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();
        }
    }
}

我的activity_main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.dipankarroy.rpitoandroidmessengerapp.MainActivity"
    android:onClick="Send"
    android:nestedScrollingEnabled="false">

    <EditText
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:hint="@string/name" />

    <EditText
        android:id="@+id/partNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignEnd="@+id/name"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignRight="@+id/name"
        android:layout_below="@+id/name"
        android:hint="@string/part_number" />

    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/partNumber"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="36dp"
        android:text="@string/send"
        android:onClick="Send" />
</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

您需要为按钮注册一个点击监听器:

button.setOnClickListener(this);

然后在您的活动上实施View.OnClickListener

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  @Override public void onClick(View v) {
    new Create_Part().execute();
  }
}

答案 1 :(得分:0)

从您的根android:onClick="Send"删除RelativeLayout。当您点击按钮以外的任何地方时,您实际上是在点击您的根布局及其在您的活动中调用Send(View view)方法。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.dipankarroy.rpitoandroidmessengerapp.MainActivity"
android:nestedScrollingEnabled="false">

答案 2 :(得分:-1)

你可以这样 -

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {              

               new Create_Part().execute();                 

            }
        }
    });

希望它会对你有所帮助。