我已经尝试了所有想到的方法,我已经研究了 2 天了。我是安卓新手。我最后的求助是求助于 Stackoverflow 上的大师们。指导我。
背景.java
protected String doInBackground(String... params) {
String update_id = params[1];
try {
URL url = new URL(update_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
OutputStream OS = httpURLConnection.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS,"UTF-8"));
String data = URLEncoder.encode("id","UTF-8") + "=" + URLEncoder.encode(update_id, "UTF-8");
OS.write(data.getBytes());
bufferedWriter.flush();
OS.close();
InputStream is = httpURLConnection.getInputStream();
is.close();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
while((inputLine = bufferedReader.readLine()) != null){
sb.append(inputLine);
}
return "update";}
@Override
protected void onPostExecute(String result) {
AccountDetailsFragment ac = new AccountDetailsFragment();
ac.receiveDetails(sb);}
AccountDetailsFragment.java
public class AccountDetailsFragment extends Fragment{
EditText update_id, update_address, update_name;
String id = "";
String idd ,namee ,addresss, login_id;
View v;
public AccountDetailsFragment() {
// Required empty public constructor
}
public void receiveLoginID(String id){
this.login_id = id;
}
public void receiveDetails(StringBuilder sb){
String[] strArray = sb.toString().split(Pattern.quote("split"));
idd= strArray[0];
namee= strArray[1];
addresss= strArray[2];
System.out.println("-*-*--*-*-*-*-*-*-*-*");
System.out.println(idd);
System.out.println(namee);
System.out.println(addresss);
System.out.println("*-*-*-*-*-*-*-*-*-*-*");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LayoutInflater lf = getActivity().getLayoutInflater();
v = lf.inflate(R.layout.fragment_account_details, container, false);
update_id = (EditText) v.findViewById(R.id.et_id_edit);
update_name = (EditText) v.findViewById(R.id.et_Name_edit);
update_address = (EditText) v.findViewById(R.id.et_address_edit);
getActivity().setTitle("Account Details");
Button update = (Button) v.findViewById(R.id.btnUpdate);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String method = "update";
Background background = new Background(getContext());
background.execute(method, login_id);
System.out.println("*/*/*/*/*/*/*/*/*/*/*/");
System.out.println(idd);
System.out.println(namee);
System.out.println(addresss);
System.out.println("*/*/*/*/*/*/*/*/*/*/*/");
update_id.setText(idd.toString());
update_name.setText(namee.toString());
update_address.setText(addresss.toString());
}
});
return v;
}}
更新.php
<?php
require "init.php";
$update_id=$_POST["id"];
$sql_query="select * from test where id = '$update_id'";
$result = mysqli_query($con,$sql_query);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["id"];
echo ("split");
echo $row["name"];
echo ("split");
echo $row["address"];
}
} else {
echo $update_id;
}
?>
日志
I/System.out: */*/*/*/*/*/*/*/*/*/*/
07-25 15:55:09.367 5914-5914/com.syntillate.aazif.aazifapp I/System.out: null
07-25 15:55:09.367 5914-5914/com.syntillate.aazif.aazifapp I/System.out: null
07-25 15:55:09.367 5914-5914/com.syntillate.aazif.aazifapp I/System.out: null
07-25 15:55:09.367 5914-5914/com.syntillate.aazif.aazifapp I/System.out:
*/*/*/*/*/*/*/*/*/*/*/
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toString()' on a null object reference
at com.syntillate.aazif.aazifapp.AccountDetailsFragment$1.onClick(AccountDetailsFragment.java:115)
最佳答案
将onPostExecute()
改成这个
@Override
protected void onPostExecute(字符串结果){
接收详细信息(某人);
}
并且还使 Background
成为内部类(如果还没有的话)。
你正在这样做:
AccountDetailsFragment ac = new AccountDetailsFragment();
ac.receiveDetails(sb);
创建 AccountDetailsFragment
的新实例并调用 receiveDetails()
它不会更改调用类中的值(idd、namee 和地址)。
关于android - EditText SetText 获取空值。通过 php 从 sql 中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45301643/