Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从一个类到另一个类获取变量以在包装器中使用_Java_Android_Android Intent - Fatal编程技术网

Java 如何从一个类到另一个类获取变量以在包装器中使用

Java 如何从一个类到另一个类获取变量以在包装器中使用,java,android,android-intent,Java,Android,Android Intent,我遵循了对此处问题的复选框回答中的说明: 为了从单个函数中获取两个值。下面是我的主类的一部分,我在其中设置了需要传递给另一个类的两个变量 我想要的变量是searchURL和searchURLTwo。我可能可以发送它们,但我只用于发送在另一个活动中使用的数据,不确定使用它发送给另一个不启动新活动的类 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance

我遵循了对此处问题的复选框回答中的说明: 为了从单个函数中获取两个值。下面是我的主类的一部分,我在其中设置了需要传递给另一个类的两个变量 我想要的变量是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扩展异步任务{
公共静态字符串标记\u ID=“ID”;
公共静态字符串TAG_RESULTS=“RESULTS”;
JSONArray结果;
JSONObject jSon;
JSONObject jSon2;
公共字符串firstID;
公共字符串secondID;
@凌驾
受保护的空白背景(字符串…personSearchURLOne){
//TODO自动生成的方法存根
Log.d(“getID中的参数0”,personSearchURLOne[0]);
试一试{
jSon=new JSONParser().execute(personSearchURLOne[0]).get();
results=jSon.getJSONArray(TAG_results);

对于(int i=0;i您还没有在任何地方创建类getIDs的实例。我假设它将在具有两个EditText的同一活动中的某个事件处理程序函数上创建。现在您已经在该类中创建了searchURLOne和searchURLTwo

您需要调用new 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类中尝试以下操作


这将给出AsncTask的执行结果

我不确定这样调用它是否有效,因为getIDs扩展了asynctask,doinbackground没有返回任何东西。相反,有getter方法。我更新了代码,以显示我的整个getIDs类和getData类,我在其中调用以获取第一个和第二个IDgetID中的getter不起作用,但它们是空的。您只需更改getID类,以便doInBackGround通过将
Void
更改为来返回值,例如
extends AsyncTask
部分中的
String
。这样做只会让我返回一个值,我需要返回两个值。创建一个包含这两个值的类您希望从doInBackground()返回并返回类的新对象onPostExecute接收doInBackground的结果,但我需要返回两个结果,这就是为什么我有getter方法,因为doInBackground不允许我返回两个结果。创建一个包含要返回的两个值的类,并从doInBackground()返回该类的新对象
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();

       }       
}