我1按鈕,1的EditText,6複選框和1 TextView的(另一活動)獲取文字和CheckBox的狀態,然後把這些到URL使用HTTP POST
我想這些: 首先的onClick按鈕,從的EditText獲取文本,將它保存到一個變量,並檢查是否複選框被選中與否,如果檢查產生一個VA ribale and setText to TRUE else FALSE。
其次經由HTTP POST方法發送複選框和的EditText 7個變量的URL。之後得到服務器響應,並顯示它在TextView的另一個活動
這是我的JAVA文件,但它不工作,有人會糾正這些代碼。
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import static com.royalrandhawa.untitled.R.id.mainSearch;
/**
* Created by ROYAL on 10/11/2017.
*/
public class SurfAnony extends Activity {
String one, two, three, four, five, six;
CheckBox First, Second, Third, Fourth, Fifth, Sixth;
TextView content;
Button search = (Button) findViewById(R.id.surfNowBtn);
EditText query = (EditText) findViewById(mainSearch);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.surf_anony);
First = (CheckBox) findViewById(R.id.eurlchb);
Second = (CheckBox) findViewById(R.id.epagechb);
Third = (CheckBox) findViewById(R.id.alckchb);
Fourth = (CheckBox) findViewById(R.id.ftcchb);
Fifth = (CheckBox) findViewById(R.id.djschb);
Sixth = (CheckBox) findViewById(R.id.dsbchb);
//First CheckBox
First.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (First.isChecked()) {
one = "true";
} else {
one = "false";
}
}
});
//Second CheckBox
Second.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Second.isChecked()) {
two = "true";
} else {
two = "false";
}
}
});
//Third CheckBox
Third.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Third.isChecked()) {
three = "true";
} else {
three = "false";
}
}
});
//Fourth CheckBox
Fourth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Fourth.isChecked()) {
four = "true";
} else {
four = "false";
}
}
});
//Fifth CheckBox
Fifth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Fifth.isChecked()) {
five = "true";
} else {
five = "false";
}
}
});
//Sixth CheckBox
Sixth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Sixth.isChecked()) {
six = "true";
} else {
six = "false";
}
}
});
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
GetText();
} catch (Exception ex) {
content.setText(" url exeption! ");
}
}
});
}
public void GetText() throws UnsupportedEncodingException {
// Get user defined values
String q = query.getText().toString();
// Create data variable for sent values to server
String data = URLEncoder.encode("q", "UTF-8")
+ "=" + URLEncoder.encode(q, "UTF-8");
data += "&" + URLEncoder.encode("eurl", "UTF-8") + "="
+ URLEncoder.encode(one, "UTF-8");
data += "&" + URLEncoder.encode("epage", "UTF-8")
+ "=" + URLEncoder.encode(two, "UTF-8");
data += "&" + URLEncoder.encode("alck", "UTF-8")
+ "=" + URLEncoder.encode(three, "UTF-8");
data += "&" + URLEncoder.encode("ftc", "UTF-8")
+ "=" + URLEncoder.encode(four, "UTF-8");
data += "&" + URLEncoder.encode("djs", "UTF-8")
+ "=" + URLEncoder.encode(five, "UTF-8");
data += "&" + URLEncoder.encode("dsb", "UTF-8")
+ "=" + URLEncoder.encode(six, "UTF-8");
String text = "";
BufferedReader reader = null;
// Send data
try {
// Defined URL where to send data
URL url = new URL("my url here!");
// Send POST data request
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the server response
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
// Append server response in string
sb.append(line + "\n");
}
text = sb.toString();
} catch (Exception ex) {
} finally {
try {
reader.close();
} catch (Exception ex) {
}
}
// Show response on activity
content.setText(text);
}
}
這是logcat的
10-15 16:46:29.451 19130-19130/com.royalrandhawa.xemp E/AndroidRuntime:致命異常:主 過程:com.royalrandhawa.xemp ,PID:19130 了java.lang.RuntimeException:無法實例活動 ComponentInfo {com.royalrandhawa.xemp/com.royalrandhawa.xemp.SurfAnony}:在 android.ap 顯示java.lang.NullPointerException p.ActivityThread.performLaunchActivity(ActivityThread.java:2264) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 在android.app.ActivityThread.access $ 800(ActivityThread.java:151) 在 機器人.app.ActivityThread $ H.handleMessage(ActivityThread.java:1321) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android .app.ActivityThread.main(ActivityThread.java:5299) 在java.lang.reflect.Method.invokeNative(本機方法) 在java.lang.reflect.Method.invo ke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:825) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641 ) 在dalvik.system.NativeStart.main(本機方法) 所致:顯示java.lang.NullPointerException 在android.app.Activity.findViewById(Activity.java:1899) 在com.royalrandhawa.xemp.SurfAnony( SurfAnony.java:30) at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1215) at android.app.Instrumentation.newActivit Y(儀表。Java的:1061) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 在android.app.ActivityThread.access $ 800(ActivityThread android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5299) at java.lang.reflect .Method.invokeNative(本機方法) 在java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:825) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641) 在dalvik.system.NativeStart.main(本機方法)
Put Log();在每個條件下運行(if,else)並查看問題所在的LogCat。 – Bobo159951
僱用那個人 –