Java 按钮未按预期在我的Android应用程序中工作
我是Android编程新手,我正在尝试使用PHP和JSON将两个Java 按钮未按预期在我的Android应用程序中工作,java,android,Java,Android,我是Android编程新手,我正在尝试使用PHP和JSON将两个editText字段中的文本从我的Android应用程序发送到raspberry pi。 一切正常,数据可以在数据库中查看,但唯一的问题是当我点击应用程序中的发送按钮时,它什么也不做。但当我点击发送按钮附近的任何地方时,它就会发送数据。我使用了activity\u main.xml中定义的布局文件中的onClick方法。 这是我的MainActivity.javacode: public class MainActivity
editText
字段中的文本从我的Android应用程序发送到raspberry pi。
一切正常,数据可以在数据库中查看,但唯一的问题是当我点击应用程序中的发送按钮时,它什么也不做。但当我点击发送按钮附近的任何地方时,它就会发送数据。我使用了activity\u main.xml
中定义的布局文件中的onClick方法。
这是我的MainActivity.java
code:
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();
}
}
}
您需要为按钮注册单击侦听器:
button.setOnClickListener(this);
然后对您的活动实施View.OnClickListener
:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override public void onClick(View v) {
new Create_Part().execute();
}
}
你可以这样-
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Create_Part().execute();
}
}
});
希望它能对您有所帮助。从您的根目录中删除
android:onClick=“Send”
。当您单击按钮以外的任何位置时,实际上是在单击活动中的根布局及其调用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">
首先删除私有视图;此行按钮的onClickListener
在哪里?假设onclick属性映射发送方法。共享您的activity\u main布局我已添加activity\u main.xml文件。我使用了publicsvoidsend(View-View)
方法。告诉我该怎么做。这表明方法调用可能会产生java.lang.NullPointerException警告
<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">