Java 如何从数据库中检索数据并将该数据传递到下一个活动
但我不知道如何编码这个,我使用在线数据库000webhost。我的问题是,当我单击“检索”按钮时,它将在下一个活动中发布数据库的内容,即MainActivity.class中的print.class这是我的代码 主课Java 如何从数据库中检索数据并将该数据传递到下一个活动,java,android,Java,Android,但我不知道如何编码这个,我使用在线数据库000webhost。我的问题是,当我单击“检索”按钮时,它将在下一个活动中发布数据库的内容,即MainActivity.class中的print.class这是我的代码 主课 package com.example.child.retrieve; 导入android.content.Intent; 导入android.os.Bundle; 导入android.support.v7.app.AlertDialog; 导入android.support.v7
package com.example.child.retrieve;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AlertDialog;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入com.android.volley.NetworkResponse;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.ServerError;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.HttpHeaderParser;
导入com.android.volley.toolbox.volley;
导入com.example.child.retrieve.LoginRequest;
导入com.example.child.retrieve.R;
导入com.example.child.retrieve.print;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.UnsupportedEncodingException;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终按钮bLogin=(按钮)findViewById(R.id.ret);
bLogin.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Response.Listener responseListener=新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONObject jsonResponse=新的JSONObject(响应);
boolean success=jsonResponse.getBoolean(“success”);
如果(成功){
意向意向=新意向(MainActivity.this、print.class);
MainActivity.this.startActivity(意图);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
};
LoginRequest LoginRequest=新的LoginRequest(responseListener);
RequestQueue=Volley.newRequestQueue(MainActivity.this);
添加(loginRequest);
}
});
}
/*导入com.android.volley.toolbox.HttpHeaderParser*/
公共无效onErrorResponse(截击错误){
//自f605da3起,以下各项应起作用
NetworkResponse=错误。NetworkResponse;
if(error instanceof ServerError&&response!=null){
试一试{
String res=新字符串(response.data,
HttpHeaderParser.parseCharset(response.headers,“utf-8”);
//现在,您可以使用任何反序列化程序来理解数据
JSONObject obj=新的JSONObject(res);
}捕获(不支持DencodingException e1){
//无法将数据正确解码为字符串
e1.printStackTrace();
}捕获(JSONException e2){
//返回的数据不是JSONObject?
e2.printStackTrace();
}
}
}
}
MainActivity.xml
正在加载的数据库LoginRequest.class
package com.example.child.retrieve;
导入com.android.volley.Request;
导入com.android.volley.Response;
导入com.android.volley.toolbox.StringRequest;
导入java.util.HashMap;
导入java.util.Map;
/**
*由Child于2017年1月31日创建。
*/
公共类LoginRequest扩展了StringRequest{
私有静态最终字符串登录\u请求\u URL=”http://cedportfolio.000webhostapp.com/Login.php";
私有映射参数;
公共登录请求(Response.Listener){
super(Request.Method.POST,LOGIN\u Request\u URL,listener,null);
params=新的HashMap();
}
@凌驾
公共映射getParams(){
返回参数;
}
}
打印类
package com.example.child.retrieve;
导入android.app.Activity;
导入android.os.Bundle;
/**
*由Child于2017年7月21日创建。
*/
公共类打印扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.print);
}
}
如果要将数据从一个活动传递到另一个活动,则需要创建一个可包裹的对象。检查
您将需要这样做:
public class MyData implements Parcelable {
...
}
解析响应并将其传递给新活动
MyData data = parseJson(jsonResponse)
Intent intent = new Intent(MainActivity.this, print.class);
intent.putParcelable("data", data);
MainActivity.this.startActivity(intent);
public class print extends Activity {
...
MyData data = getIntent().getParcelableExtra("data");
...
}
在新活动中恢复它
MyData data = parseJson(jsonResponse)
Intent intent = new Intent(MainActivity.this, print.class);
intent.putParcelable("data", data);
MainActivity.this.startActivity(intent);
public class print extends Activity {
...
MyData data = getIntent().getParcelableExtra("data");
...
}
请注意,在活动之间传递大对象可能会导致性能下降。您应该考虑其他策略,比如在“接收者”活动传递一些ID和获取数据,登录返回大量数据。无聊的。最好返回一个令牌并使用该令牌检索数据。还有,存储普通密码?真正地您应该在存储之前对其进行散列。你知道,安全和那些东西只是一个例子,它不是一个真实的数据库,它是为了学校的目的。看看这个答案:可能是重复的,先生,请检查图片,它包括数据库。数据不在当前活动中。数据来自数据库。所以如果我点击检索按钮。上面的图片将发布到print.class你说的“上面的图片将发布到print.class”是什么意思?是的,这是我的数据库。我想打印print.classe中的所有内容,然后您的服务器将需要一个端点来返回您需要的数据