gpt4 book ai didi

android - 后参数给定错误

转载 作者:行者123 更新时间:2023-11-29 08:38:17 25 4
gpt4 key购买 nike

您好,我创建了一个应用程序,单击按钮即可将字符串发送到下一个 Activity ,在第二个 Activity 中,我使用该值从数据库检索数据。

我正在执行以下操作。

    Intent myIntent = getIntent(); // getting the value from the previous activity
myIntent.getStringExtra("lbl_name");
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("product", lbl_name//passing the name to the database .getText().toString()));

问题是它无法识别 lbl_name。

我在互联网上搜索但找不到解决方案。请告诉我我这样做是否正确。

用于传递值的代码。

Intent myIntent = new Intent(SinglePlaceActivity.this,RecoProd.class);
myIntent.putExtra("lbl_name", "lbl_name");
SinglePlaceActivity.this.startActivity(myIntent);

访问数据库的代码。

public class RecoProd extends Activity {
EditText pd;
TextView error;

ArrayList<NameValuePair> postParameters;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

try {
Class<?> strictModeClass = Class.forName("android.os.StrictMode", true, Thread.currentThread()
.getContextClassLoader());

Class<?> threadPolicyClass = Class.forName("android.os.StrictMode$ThreadPolicy", true, Thread
.currentThread().getContextClassLoader());

Class<?> threadPolicyBuilderClass = Class.forName("android.os.StrictMode$ThreadPolicy$Builder", true,
Thread.currentThread().getContextClassLoader());

Method setThreadPolicyMethod = strictModeClass.getMethod("setThreadPolicy", threadPolicyClass);

Method detectAllMethod = threadPolicyBuilderClass.getMethod("detectAll");
Method penaltyMethod = threadPolicyBuilderClass.getMethod("penaltyLog");
Method buildMethod = threadPolicyBuilderClass.getMethod("build");

Constructor<?> threadPolicyBuilderConstructor = threadPolicyBuilderClass.getConstructor();
Object threadPolicyBuilderObject = threadPolicyBuilderConstructor.newInstance();

Object obj = detectAllMethod.invoke(threadPolicyBuilderObject);

obj = penaltyMethod.invoke(obj);
Object threadPolicyObject = buildMethod.invoke(obj);
setThreadPolicyMethod.invoke(strictModeClass, threadPolicyObject);

} catch (Exception ex) {
String TAG = null;
Log.w(TAG, ex);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.recomain);
Intent myIntent = getIntent(); // getting the value from the previous activity
String lbl_name= myIntent.getStringExtra("lbl_name");//< get lbl_name from Intent
pd = (EditText) findViewById(R.id.name);

error = (TextView) findViewById(R.id.showresult);


postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("product", lbl_name
));


// String valid = "1";

DownloadWebPageTask dw = new DownloadWebPageTask();
dw.execute("");

}

private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = null;
for (String url : urls) {
try {
response = CustomHttpClient.executeHttpPost("http://192.168.1.7/abc/check2.php", postParameters);
String res = response.toString();
// res = res.trim();
res = res.replaceAll("\\s+", "");
// error.setText(res);
try{
res = "";
JSONArray jArray = new JSONArray(res);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("prod_id","id: "+json_data.getInt("prod_id")+
", prod_name: "+json_data.getString("prod_name")+
", prod_category: "+json_data.getString("prod_category")+
", prod_cost: "+json_data.getDouble("prod_cost")
);
//Get an output to the screen
res += "\n" + json_data.getInt("prod_id") + " -> "+ json_data.getString("prod_name");
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}

try{
error.setText(res);
}
catch(Exception e){
Log.e("log_tag","Error in Display!" + e.toString());;
}
}
catch (Exception e) {
Log.e("log_tag","Error in http connection!!" + e.toString());
}
}
return response;

}
@Override
protected void onPostExecute(String result) {
}
}
}

最佳答案

您需要从 Intent 中提取 lbl_name 值,如下所示:

Intent myIntent = getIntent(); // getting the value from the previous activity
String lbl_name= myIntent.getStringExtra("lbl_name");//< get lbl_name from Intent
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("product",lbl_name));

或者如果 lbl_name 在上一个 Activity 中是静态的,那么您可以通过以下方式访问它:

postParameters.add(new BasicNameValuePair("product",
Your_prev_Activity_Name.lbl_name));

关于android - 后参数给定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com