相信每个项目都会有用户反馈建议等功能,这个实现的方法很多,下面是我实现的方法,供大家交流。首先看具体界面,三个字段。名字,邮箱为选填,可以为空,建议不能为空。如有需要可以给我留言。

下面贴出布局代码,这里用到一个
<span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">xml version="1.0" encoding="utf-8"</span><span style="color: #0000ff;">?></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">LinearLayout </span><span style="color: #ff0000;">xmlns:android</span><span style="color: #0000ff;">="http://schemas.android.com/apk/res/android"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="match_parent"</span><span style="color: #ff0000;">
android:orientation</span><span style="color: #0000ff;">="vertical"</span><span style="color: #ff0000;">
android:background</span><span style="color: #0000ff;">="@color/bg_gray"</span> <span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">include </span><span style="color: #ff0000;">layout</span><span style="color: #0000ff;">="@layout/uphead"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Name Label </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:text</span><span style="color: #0000ff;">="名字(选填)"</span><span style="color: #ff0000;">
android:paddingLeft</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:paddingRight</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:textColor</span><span style="color: #0000ff;">="@color/coffee"</span><span style="color: #ff0000;">
android:paddingTop</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:textSize</span><span style="color: #0000ff;">="12sp"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Input Name </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">EditText </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/inputName"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_margin</span><span style="color: #0000ff;">="5dip"</span><span style="color: #ff0000;">
android:layout_marginBottom</span><span style="color: #0000ff;">="15dip"</span><span style="color: #ff0000;">
android:singleLine</span><span style="color: #0000ff;">="true"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Price Label </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:text</span><span style="color: #0000ff;">="邮箱(选填)"</span><span style="color: #ff0000;">
android:paddingLeft</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:paddingRight</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:textColor</span><span style="color: #0000ff;">="@color/coffee"</span><span style="color: #ff0000;">
android:paddingTop</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:textSize</span><span style="color: #0000ff;">="12sp"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Input Price </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">EditText </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/inputEmail"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_margin</span><span style="color: #0000ff;">="5dip"</span><span style="color: #ff0000;">
android:layout_marginBottom</span><span style="color: #0000ff;">="15dip"</span><span style="color: #ff0000;">
android:singleLine</span><span style="color: #0000ff;">="true"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Description Label </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">TextView </span><span style="color: #ff0000;">android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:text</span><span style="color: #0000ff;">="建议(必填)"</span><span style="color: #ff0000;">
android:paddingLeft</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:paddingRight</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:paddingTop</span><span style="color: #0000ff;">="10dip"</span><span style="color: #ff0000;">
android:textColor</span><span style="color: #0000ff;">="@color/coffee"</span><span style="color: #ff0000;">
android:textSize</span><span style="color: #0000ff;">="12sp"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Input description </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">EditText </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/inputDesc"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_margin</span><span style="color: #0000ff;">="5dip"</span><span style="color: #ff0000;">
android:layout_marginBottom</span><span style="color: #0000ff;">="15dip"</span><span style="color: #ff0000;">
android:lines</span><span style="color: #0000ff;">="4"</span><span style="color: #ff0000;">
android:gravity</span><span style="color: #0000ff;">="top"</span><span style="color: #0000ff;">/></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;"> Button Create Product </span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">Button </span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/btnCreateProduct"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:text</span><span style="color: #0000ff;">="提交"</span><span style="color: #ff0000;">
android:textSize</span><span style="color: #0000ff;">="20sp"</span><span style="color: #ff0000;">
android:textColor</span><span style="color: #0000ff;">="@color/coffee"</span>
<span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">LinearLayout</span><span style="color: #0000ff;">></span>下面贴出uphead的布局代码,里面用到一个TextView,一个Button为返回按钮。
<span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">xml version="1.0" encoding="utf-8"</span><span style="color: #0000ff;">?></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">RelativeLayout </span><span style="color: #ff0000;">xmlns:android</span><span style="color: #0000ff;">="http://schemas.android.com/apk/res/android"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="fill_parent"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="50dp"</span><span style="color: #ff0000;">
android:background</span><span style="color: #0000ff;">="@drawable/top"</span> <span style="color: #0000ff;">></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">TextView
</span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/tv_head"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_centerInParent</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">
android:shadowColor</span><span style="color: #0000ff;">="#ff000000"</span><span style="color: #ff0000;">
android:shadowDx</span><span style="color: #0000ff;">="2"</span><span style="color: #ff0000;">
android:shadowDy</span><span style="color: #0000ff;">="0"</span><span style="color: #ff0000;">
android:shadowRadius</span><span style="color: #0000ff;">="1"</span><span style="color: #ff0000;">
android:text</span><span style="color: #0000ff;">=""</span><span style="color: #ff0000;">
android:textColor</span><span style="color: #0000ff;">="@color/white"</span><span style="color: #ff0000;">
android:textSize</span><span style="color: #0000ff;">="18sp"</span><span style="color: #ff0000;">
android:textStyle</span><span style="color: #0000ff;">="bold"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">Button
</span><span style="color: #ff0000;">android:id</span><span style="color: #0000ff;">="@+id/upback"</span><span style="color: #ff0000;">
android:layout_width</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_height</span><span style="color: #0000ff;">="wrap_content"</span><span style="color: #ff0000;">
android:layout_alignParentLeft</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">
android:layout_centerVertical</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">
android:layout_marginLeft</span><span style="color: #0000ff;">="17dp"</span><span style="color: #ff0000;">
android:drawableLeft</span><span style="color: #0000ff;">="@id/tv_head"</span><span style="color: #ff0000;">
android:background</span><span style="color: #0000ff;">="@drawable/back"</span> <span style="color: #0000ff;">/></span>
<span style="color: #0000ff;"></</span><span style="color: #800000;">RelativeLayout</span><span style="color: #0000ff;">></span>下面贴出android客户端代码,三个类,一个用于与服务器交互发送post请求,以及json的传递。还有一个Dailog实例。
立即学习“PHP免费学习笔记(深入)”;
<span style="color: #0000ff;">package</span><span style="color: #000000;"> com.android.up;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.ArrayList;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.HttpResponse;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.NameValuePair;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.client.ClientProtocolException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.message.BasicNameValuePair;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.json.JSONObject;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.android.MainActivity;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.android.R;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> com.anroid.net.DialogUtil;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.app.Activity;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.app.ProgressDialog;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.content.Intent;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.os.AsyncTask;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.os.Bundle;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.view.View;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.view.View.OnClickListener;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.widget.Button;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.widget.EditText;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.widget.TextView;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> up <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Activity {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Progress Dialog</span>
<span style="color: #0000ff;">private</span><span style="color: #000000;"> ProgressDialog pDialog;
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> TextView tv_head;
JSONParser jsonParser </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> JSONParser();
EditText inputName;
EditText inputEmail;
EditText inputDesc;
Button upback;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> url to create new product</span>
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> String url_up = "http://10.0.2.2/up/up.php";<span style="color: #008000;"><br> private static final String TAG_MESSAGE = "message";<br></span>
<span style="color: #000000;"> @Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onCreate(Bundle savedInstanceState) {
</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.onCreate(savedInstanceState);
setContentView(R.layout.up);
tv_head </span>=<span style="color: #000000;"> (TextView)findViewById(R.id.tv_head);
tv_head.setText(</span>"建议"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Edit Text</span>
inputName =<span style="color: #000000;"> (EditText) findViewById(R.id.inputName);
inputEmail </span>=<span style="color: #000000;"> (EditText) findViewById(R.id.inputEmail);
inputDesc </span>=<span style="color: #000000;"> (EditText) findViewById(R.id.inputDesc);
upback </span>=<span style="color: #000000;"> (Button)findViewById(R.id.upback);
upback.setOnClickListener(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> OnClickListener() {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View arg0) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> TODO Auto-generated method stub</span>
Intent back = <span style="color: #0000ff;">new</span> Intent(up.<span style="color: #0000ff;">this</span>,MainActivity.<span style="color: #0000ff;">class</span><span style="color: #000000;">);
back.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(back);
up.</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.finish();
}
});
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Create button</span>
Button btnCreateProduct =<span style="color: #000000;"> (Button) findViewById(R.id.btnCreateProduct);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> button click event</span>
btnCreateProduct.setOnClickListener(<span style="color: #0000ff;">new</span><span style="color: #000000;"> View.OnClickListener() {
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onClick(View view) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> creating new product in background thread</span>
<span style="color: #0000ff;">if</span><span style="color: #000000;">(validate()){
</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Up().execute();
}
}
});
}
</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> validate()
{
String description </span>=<span style="color: #000000;"> inputDesc.getText().toString().trim();
</span><span style="color: #0000ff;">if</span> (description.equals(""<span style="color: #000000;">))
{
DialogUtil.showDialog(</span><span style="color: #0000ff;">this</span>, "您还没有填写建议", <span style="color: #0000ff;">false</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;
}
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">;
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* Background Async Task to Create new product
* </span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">class</span> Up <span style="color: #0000ff;">extends</span> AsyncTask<String, String, String><span style="color: #000000;"> {
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* Before starting background thread Show Progress Dialog
* </span><span style="color: #008000;">*/</span><span style="color: #000000;">
@Override
</span><span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onPreExecute() {
</span><span style="color: #0000ff;">super</span><span style="color: #000000;">.onPreExecute();
pDialog </span>= <span style="color: #0000ff;">new</span> ProgressDialog(up.<span style="color: #0000ff;">this</span><span style="color: #000000;">);
pDialog.setMessage(</span>"正在上传.."<span style="color: #000000;">);
pDialog.setIndeterminate(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);
pDialog.setCancelable(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);
pDialog.show();
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* Creating product
* </span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">protected</span><span style="color: #000000;"> String doInBackground(String... args) {
String name </span>=<span style="color: #000000;"> inputName.getText().toString();
String email </span>=<span style="color: #000000;"> inputEmail.getText().toString();
String description </span>=<span style="color: #000000;"> inputDesc.getText().toString();
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Building Parameters</span>
List<NameValuePair> params = <span style="color: #0000ff;">new</span> ArrayList<NameValuePair><span style="color: #000000;">();
params.add(</span><span style="color: #0000ff;">new</span> BasicNameValuePair("name"<span style="color: #000000;">, name));
params.add(</span><span style="color: #0000ff;">new</span> BasicNameValuePair("email"<span style="color: #000000;">, email));
params.add(</span><span style="color: #0000ff;">new</span> BasicNameValuePair("description"<span style="color: #000000;">, description));
</span><span style="color: #008000;">//</span><span style="color: #008000;"> getting JSON Object
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Note that create product url accepts POST method</span>
<span style="color: #0000ff;">try</span><span style="color: #000000;">{
JSONObject json </span>=<span style="color: #000000;"> jsonParser.makeHttpRequest(url_up,
</span>"POST"<span style="color: #000000;">, params);<br> String message = json.getString(TAG_MESSAGE);<br> return message;
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(Exception e){</span><span style="color: #000000;">
e.printStackTrace(); <br> return "";
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> check for success tag</span>
<span style="color: #000000;">
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* After completing background task Dismiss the progress dialog
* *</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">protected</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> onPostExecute(String message) { </span><span style="color: #000000;">
pDialog.dismiss();<br> //message 为接收doInbackground的返回值<br> Toast.makeText(getApplicationContext(), message, 8000).show();
}
}
}</span>下面贴出Dailog实例类
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
<span style="color: #008000;">/**</span><span style="color: #008000;">
*
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">package</span><span style="color: #000000;"> com.anroid.net;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.app.AlertDialog;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.content.Context;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.content.DialogInterface;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.content.DialogInterface.OnClickListener;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.view.View;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.app.Activity;</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> DialogUtil
{
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 定义一个显示消息的对话框</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> showDialog(<span style="color: #0000ff;">final</span><span style="color: #000000;"> Context ctx
, String msg , </span><span style="color: #0000ff;">boolean</span><span style="color: #000000;"> closeSelf)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建一个AlertDialog.Builder对象</span>
AlertDialog.Builder builder = <span style="color: #0000ff;">new</span><span style="color: #000000;"> AlertDialog.Builder(ctx)
.setMessage(msg).setCancelable(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(closeSelf)
{
builder.setPositiveButton(</span>"确定", <span style="color: #0000ff;">new</span><span style="color: #000000;"> OnClickListener()
{
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> onClick(DialogInterface dialog, <span style="color: #0000ff;">int</span><span style="color: #000000;"> which)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 结束当前Activity</span>
<span style="color: #000000;"> ((Activity)ctx).finish();
}
});
}
</span><span style="color: #0000ff;">else</span><span style="color: #000000;">
{
builder.setPositiveButton(</span>"确定", <span style="color: #0000ff;">null</span><span style="color: #000000;">);
}
builder.create().show();
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 定义一个显示指定组件的对话框</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> showDialog(Context ctx , View view)
{
AlertDialog.Builder builder </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> AlertDialog.Builder(ctx)
.setView(view).setCancelable(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">)
.setPositiveButton(</span>"确定", <span style="color: #0000ff;">null</span><span style="color: #000000;">);
builder.create()
.show();
}
}</span>剩下就是如何与服务器端交互了不多说,代码如下
<span style="color: #0000ff;">package</span><span style="color: #000000;"> com.android.up;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.BufferedReader;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.IOException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.InputStream;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.InputStreamReader;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.UnsupportedEncodingException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.HttpEntity;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.HttpResponse;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.NameValuePair;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.client.ClientProtocolException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.client.entity.UrlEncodedFormEntity;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.client.methods.HttpPost;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.impl.client.DefaultHttpClient;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.http.protocol.HTTP;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.json.JSONException;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.json.JSONObject;
</span><span style="color: #0000ff;">import</span><span style="color: #000000;"> android.util.Log;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> JSONParser {
</span><span style="color: #0000ff;">static</span> InputStream is = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">static</span> JSONObject jObj = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">static</span> String json = ""<span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> constructor</span>
<span style="color: #0000ff;">public</span><span style="color: #000000;"> JSONParser() {
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> function get json from url
</span><span style="color: #008000;">//</span><span style="color: #008000;"> by making HTTP POST </span>
<span style="color: #0000ff;">public</span><span style="color: #000000;"> JSONObject makeHttpRequest(String url, String method,
List</span><NameValuePair><span style="color: #000000;"> params) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Making HTTP request</span>
<span style="color: #0000ff;">try</span><span style="color: #000000;"> {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> request method is POST
</span><span style="color: #008000;">//</span><span style="color: #008000;"> defaultHttpClient</span>
DefaultHttpClient httpClient = <span style="color: #0000ff;">new</span><span style="color: #000000;"> DefaultHttpClient();
HttpPost httpPost </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> HttpPost(url);
httpPost.setEntity(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> UrlEncodedFormEntity(params,HTTP.UTF_8));
HttpResponse httpResponse </span>=<span style="color: #000000;"> httpClient.execute(httpPost);
HttpEntity httpEntity </span>=<span style="color: #000000;"> httpResponse.getEntity();
is </span>=<span style="color: #000000;"> httpEntity.getContent();
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (UnsupportedEncodingException e) {
e.printStackTrace();
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (ClientProtocolException e) {
e.printStackTrace();
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (IOException e) {
e.printStackTrace();
}
</span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
BufferedReader reader </span>= <span style="color: #0000ff;">new</span> BufferedReader(<span style="color: #0000ff;">new</span><span style="color: #000000;"> InputStreamReader(
is, </span>"UTF-8"<span style="color: #000000;">));
StringBuilder sb </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
String line </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">while</span> ((line = reader.readLine()) != <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
sb.append(line </span>+ "\n"<span style="color: #000000;">);
}
is.close();
json </span>=<span style="color: #000000;"> sb.toString();
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
Log.e(</span>"Buffer Error", "Error converting result " +<span style="color: #000000;"> e.toString());
Log.d(</span>"json"<span style="color: #000000;">, json.toString());
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> try parse the string to a JSON object</span>
<span style="color: #0000ff;">try</span><span style="color: #000000;"> {
jObj </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> JSONObject(json);
} </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (JSONException e) {
Log.e(</span>"JSON Parser", "Error parsing data " +<span style="color: #000000;"> e.toString());
}
</span><span style="color: #008000;">//</span><span style="color: #008000;"> return JSON String</span>
<span style="color: #0000ff;">return</span><span style="color: #000000;"> jObj;
}
}</span>到此android客户端已经完成,后天服务器端用php+mysql实现,当然这里只是个实例,存取到数据库里面,没有进行展示,代码如下
<?<span style="color: #000000;">php
</span><span style="color: #008000;">//</span><span style="color: #008000;"> array for JSON response</span>
<span style="color: #800080;">$response</span> = <span style="color: #0000ff;">array</span><span style="color: #000000;">();
</span><span style="color: #0000ff;">include</span>("conn.php"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> check for required fields</span>
<span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$_POST</span>['name']) && <span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$_POST</span>['email']) && <span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$_POST</span>['description'<span style="color: #000000;">])) {
</span><span style="color: #800080;">$name</span> = <span style="color: #800080;">$_POST</span>['name'<span style="color: #000000;">];
</span><span style="color: #800080;">$email</span> = <span style="color: #800080;">$_POST</span>['email'<span style="color: #000000;">];
</span><span style="color: #800080;">$description</span> = <span style="color: #800080;">$_POST</span>['description'<span style="color: #000000;">];
</span><span style="color: #800080;">$result</span> = <span style="color: #008080;">mysql_query</span>("INSERT INTO up(name, email, description) VALUES('<span style="color: #800080;">$name</span>', '<span style="color: #800080;">$email</span>', '<span style="color: #800080;">$description</span>')"<span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;"> check if row inserted or not</span>
<span style="color: #0000ff;">if</span> (<span style="color: #800080;">$result</span><span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> successfully inserted into database</span>
<span style="color: #800080;">$response</span>["success"] = 1<span style="color: #000000;">;
</span><span style="color: #800080;">$response</span>["message"] = "Product successfully created."<span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> echoing JSON response</span>
<span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">$response</span><span style="color: #000000;">);
} </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> failed to insert row</span>
<span style="color: #800080;">$response</span>["success"] = 0<span style="color: #000000;">;
</span><span style="color: #800080;">$response</span>["message"] = "Oops! An error occurred."<span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> echoing JSON response</span>
<span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">$response</span><span style="color: #000000;">);
}
} </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {
</span><span style="color: #008000;">//</span><span style="color: #008000;"> required field is missing</span>
<span style="color: #800080;">$response</span>["success"] = 0<span style="color: #000000;">;
</span><span style="color: #800080;">$response</span>["message"] = "Required field(s) is missing"<span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;"> echoing JSON response</span>
<span style="color: #0000ff;">echo</span> json_encode(<span style="color: #800080;">$response</span><span style="color: #000000;">);
}
</span>?>数据库表结构如下,连接数据库代码就不贴出了,记得把编码设置为UTF-8就行了。

到此就完成了一个用户反馈的基本功能,后台数据里展示。如有问题欢迎给我留言。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号