Java 将字符串传递给AsyncTask类
我有下面的班级Java 将字符串传递给AsyncTask类,java,android,android-asynctask,Java,Android,Android Asynctask,我有下面的班级 public class Faculty extends Activity { JSONObject jsonobject; JSONArray jsonarray; ListView listview; ListViewAdapter adapter; ProgressDialog mProgressDialog; ArrayList<HashMap<String, String>> arraylist;
public class Faculty extends Activity {
JSONObject jsonobject;
JSONArray jsonarray;
ListView listview;
ListViewAdapter adapter;
ProgressDialog mProgressDialog;
ArrayList<HashMap<String, String>> arraylist;
static String NAME = "name";
static String DESIGNATION = "designation";
//static String POPULATION = "population";
static String FAC_IMG = "fac_img";
static String url;
@Override
public void onCreate(Bundle savedInstantState){
super.onCreate(savedInstantState);
// Get the view from listview_main.xml
setContentView(R.layout.faculty_list);
String data = getIntent().getStringExtra("Dpmt");
if(data.equals("DOCScience")){
url="Department%20Of%20Computer%20Science";
}
if(data.equals("DOIT")){
url="Department%20Of%20Information%20%26%20Technology";
}
// Execute DownloadJSON AsyncTask
new DownloadJSON().execute(url);
//String url="http://192.168.170.89/bbau_faculty.php?dept="+Dept;
}
private class DownloadJSON extends AsyncTask<String, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Create a progressdialog
mProgressDialog = new ProgressDialog(Faculty.this);
// Set progressdialog title
//mProgressDialog.setTitle("Android JSON Parse Tutorial");
// Set progressdialog message
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Void doInBackground(String... params) {
// Create an array
arraylist = new ArrayList<HashMap<String, String>>();
String url1=params[0];
// Retrieve JSON Objects from the given URL address
System.out.println(url1);
jsonobject = JSONfunctions.getJSONfromURL("http://192.168.170.89/bbau_faculty.php?dept="+url1);
在DownloadJSON类中,方法
doInBackground(String…params)
我想接收传入的urlexecute(url)
但是url1
打印为空
但url1打印为空
你的做法是正确的。如果您将null作为值接收,则在您的情况下,这意味着
String data = getIntent().getStringExtra("Dpmt");
既不是
DOCScience
也不是DOIT
,而且url
仍然用默认值初始化(声明为类成员的String
为null)可能是因为数据永远不等于DOCScience或DOIT。确保使用正确的键获取和设置数据。设置时数据也可能是“”。在将其传递给异步任务之前,请尝试检查url
值:
if(url !=null && url.trim().length()>0){
new DownloadJSON().execute(url);
}
如果检查数据值DOCScience
或DOIT
,则也使用else if
前导,而不是多个if
:
if(data.equals("DOCScience")){
url="Department%20Of%20Computer%20Science";
}else if(data.equals("DOIT")){
url="Department%20Of%20Information%20%26%20Technology";
}else{
// no match
}
如果(data.equals(“DOIT”)返回true???选中此复选框-案例与DOCScience匹配,即在行new DownloadJSON().execute(url)之前;检查你是否拼错了这个词。我强烈建议您在new DownloadJSON().execute(url)一行之前开始使用constants;如果我打印url,我得到的是部门%20Of%20Computer%20Science,这意味着其中一条if语句为true,但我在DoinBackgroundTask中得到的url1=null检查字符串是否拼写错误,是否包含尾随和/或前导空格。记住,在new DownloadJSON().execute(url)行之前,equals是区分大小写的;如果我打印url,我得到的是部门%20Of%20Computer%20Science,这意味着其中一条if语句为true,但我在doinBackgroundTask中得到的url1=null
if(url !=null && url.trim().length()>0){
new DownloadJSON().execute(url);
}
if(data.equals("DOCScience")){
url="Department%20Of%20Computer%20Science";
}else if(data.equals("DOIT")){
url="Department%20Of%20Information%20%26%20Technology";
}else{
// no match
}