![](/img/trans.png)
[英]How do I get information of the variables from one class to another Action Listener class?
[英]How do I get variables from one class to another to be used in a wrapper
我正在按照對以下問題的復選標記響應中的說明進行操作: 如何從Java方法返回2個值? 為了從單個函數獲得兩個值。 下面是我的主類的一部分,我設置了兩個變量我需要傳遞給另一個類我想要的變量是searchURL和searchURLTwo。 我也許可以有意圖地發送給他們,但我只用於發送在另一個活動中使用的數據,不確定誰使用它來只是發送給另一個不會啟動新活動的類。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.totlayout);
//set the UI elements
searchOne = (EditText) findViewById(R.id.searchOne);
searchTwo = (EditText) findViewById(R.id.searchTwo);
findMovies = (Button) findViewById(R.id.findMovies);
searchOne.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
//make person search url1
final StringBuilder personSearchURLOne =
new StringBuilder(getName.getName1(searchOne));
searchURLOne = personSearchURLOne.toString();
return false;
}
});
searchTwo.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
//make person search url2
final StringBuilder personSearchURLTwo =
new StringBuilder(getName.getName2(searchTwo));
searchURLTwo = personSearchURLTwo.toString();
return false;
}
});
}
我想在jSon = new JSONParser的以下代碼中使用searchURLOne:
public class getIDs extends AsyncTask<String, Void, Void> {
public static String TAG_ID = "id";
public static String TAG_RESULTS = "results";
JSONArray results;
JSONObject jSon;
JSONObject jSon2;
public String firstID;
public String secondID;
@Override
protected Void doInBackground(String... personSearchURLOne) {
// TODO Auto-generated method stub
Log.d("params 0 in getIDs", personSearchURLOne[0]);
try{
jSon = new JSONParser().execute(personSearchURLOne[0]).get();
results = jSon.getJSONArray(TAG_RESULTS);
for(int i=0; i<results.length(); i++){
JSONObject r = results.getJSONObject(i);
firstID = r.getString(TAG_ID);
Log.d("firstID", firstID);
jSon2 = new JSONParser().execute(personSearchURLOne[1]).get();
results = jSon2.getJSONArray(TAG_RESULTS);
for(int j=0; j<results.length(); j++){
JSONObject r2 = results.getJSONObject(j);
secondID = r2.getString(TAG_ID);
}
}
}catch(InterruptedException e1){
e1.printStackTrace();
}catch(ExecutionException e1){
e1.printStackTrace();
}catch(JSONException e){
Log.e("Error", e.toString());
}
return null;
}
ublic String getFirstID(){
return firstID;
}
public String getSecondID(){
return secondID;
}
}
我更新getIDs代碼顯示整個代碼和doInBackground不返回值,而不是有兩個getter方法。 正確的URL在personSearchURL [0]和[1]處傳遞。 從我的主要功能我稱之為的getData其中包含了從API它是在的getData,我稱之為getIDs,讓搜索結果中的所有執行邏輯的。 以下是相關的getData代碼:
public class getData extends AsyncTask<String, Void, ArrayList<String> > {
String idOne;
String idTwo;
ArrayList<String> titleOne;
ArrayList<String> titleTwo;
ArrayList<String> myCommonFilms;
public static getIDs getMyIds(){
return new getIDs();
}
/*public static Titles getMyTitles(String title){
return new Titles();
}*/
protected ArrayList<String> doInBackground(String... params) {
Log.d("params in doinbackground contains", params[0]);
Log.d("params in doinbackground contains", params[1]);
new getIDs().execute(params[0], params[1]);
//get ID 1
/*getIDs idholder = new getIDs().execute(params[0], params[1]);*/
getIDs id1 = getMyIds();
idOne = id1.getFirstID();
我需要知道如何將getIDs的返回值fo firstID獲取到我的getData類中。
您尚未在任何地方創建類getID的實例。 我假設它將在具有兩個EditTexts的同一活動中的某些事件處理函數上創建。 現在,您已經在此類中具有searchURLOne和searchURLTwo。
您需要調用新的getIDs()。execute(searchURLOne,searchURLTwo);
您還可以如下訪問變量
protected Void doInBackground(String... personSearchURLOne) {
// TODO Auto-generated method stub
try{
String searchURLOne = personSearchURLOne[0];
String searchURLTwo = personSearchURLOne[1];
/*this needs to be reference to searchURLOne*/
jSon = new JSONParser().execute().get();
}
}
在您的getData類http://developer.android.com/reference/android/os/AsyncTask.html#onPostExecute%28Result%29中嘗試以下操作
這將給出執行AsncTask的結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.