我是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>
答案 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();
}
}
});
希望它会对你有所帮助。