Java Android在另一个异步任务中调用异步任务?

Java Android在另一个异步任务中调用异步任务?,java,android,http,asynchronous,Java,Android,Http,Asynchronous,我正在尝试在另一个异步方法内部执行异步调用,我不确定是否正确执行了此操作,或者是否可能。第一个调用从数据库获取partID,然后第二个调用获取part的lotnumber。我这样做的理由是能够循环并将关联的partLotNumebrs放入微调器中,并在Listview中显示微调器列表。我做错了什么?这可能吗?我知道您不能在main中进行HTTP调用,所以我不确定是否有其他方法可以做到这一点 我犯的错误 02-13 11:04:16.431: E/AndroidRuntime(1369): FAT

我正在尝试在另一个异步方法内部执行异步调用,我不确定是否正确执行了此操作,或者是否可能。第一个调用从数据库获取partID,然后第二个调用获取part的lotnumber。我这样做的理由是能够循环并将关联的partLotNumebrs放入微调器中,并在Listview中显示微调器列表。我做错了什么?这可能吗?我知道您不能在main中进行HTTP调用,所以我不确定是否有其他方法可以做到这一点

我犯的错误

02-13 11:04:16.431: E/AndroidRuntime(1369): FATAL EXCEPTION: main
02-13 11:04:16.431: E/AndroidRuntime(1369): java.lang.NullPointerException
02-13 11:04:16.431: E/AndroidRuntime(1369):     at com.cbs.iomamobile.ViewOrderlineAssemblyActivity$getPartLotNumbers.onPostExecute(ViewOrderlineAssemblyActivity.java:258)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at com.cbs.iomamobile.ViewOrderlineAssemblyActivity$getPartLotNumbers.onPostExecute(ViewOrderlineAssemblyActivity.java:1)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at android.os.AsyncTask.finish(AsyncTask.java:602)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at android.os.AsyncTask.access$600(AsyncTask.java:156)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at android.os.Looper.loop(Looper.java:137)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at android.app.ActivityThread.main(ActivityThread.java:4340)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at java.lang.reflect.Method.invokeNative(Native Method)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at java.lang.reflect.Method.invoke(Method.java:511)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-13 11:04:16.431: E/AndroidRuntime(1369):     at dalvik.system.NativeStart.main(Native Method)
它指向这条线

textView.setText(temp.getString("name"));
我的微调器和文本视图似乎都无效,不知道为什么

汇编类

public class ViewOrderlineAssemblyActivity extends ListActivity{
    // Progress Dialog
    private ProgressDialog pDialog;

    String productName;
    String olid;
    String assemblyName;

    // Creating JSON Parser object
    JSONParser jsonParser = new JSONParser();

    // url to get all orders list
    private static String url_get_assembly_parts = "http://10.0.2.2/android_connect/get_assembly_parts.php";

    // url to get all orders list
    private static String url_get_part_partlotnumbers = "http://10.0.2.2/android_connect/get_part_partLotNumbers.php";



    // orders JSONArray
    JSONArray assembly = null;
    JSONArray parts = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.all_assemblies);

        // getting product details from intent
        Intent i = getIntent();

        // getting product id (pid) from intent
        assemblyName = i.getStringExtra("assemblyName");
        olid = i.getStringExtra(TAG_OLID);

        Log.d("assemblyName", "" + assemblyName);

        // Loading orders in Background Thread
        new LoadAllAssemblyParts().execute();



    }

    // Response from Edit Order Activity
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // if result code 100
        if (resultCode == 100) {
            // if result code 100 is received 
            // means user edited/deleted product
            // reload this screen again
            Intent intent = getIntent();
            finish();
            startActivity(intent);
        }

    }

    /**
     * Background Async Task to Load all assemblyparts by making HTTP Request
     * */
    class LoadAllAssemblyParts extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
        }

        /**
         * getting All orders from url
         * */
        protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("assemblyName", assemblyName));   

            // getting JSON string from URL
            JSONObject json = jsonParser.makeHttpRequest(url_get_assembly_parts, "GET", params);

            // Check log cat for JSON reponse
            Log.d("All partID's: ", json.toString());

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // orders found
                    // Getting Array of Parts
                    assembly = json.getJSONArray("assembly");

                    // looping through All Parts
                    for (int i = 0; i < assembly.length(); i++) {

                        JSONObject c = assembly.getJSONObject(i);

                        // Storing each json item in variable
                        String id = c.getString("partID");
                        String name = c.getString("assemblyName");

                        new getPartLotNumbers().execute(id);
                    }
                } else {
                    // no part ID's found

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all orders
        }

    }

    class getPartLotNumbers extends AsyncTask<String, String, JSONArray>{

        Spinner spinner;
        TextView textView;

        @Override
        protected JSONArray doInBackground(String... args) {            

            JSONArray parts = null;
            int success;
            String partID = args[0];

            try{
                // Building Parameters 
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("partID", partID));

                // getting part Lot Numbers by making HTTP request
                // Note that part Lot Numbers will use GET request
                JSONObject json = jsonParser.makeHttpRequest(url_get_part_partlotnumbers, "GET", params);

                // check log for json response
                Log.d("List of PartID's", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);

                if(success == 1){

                    // successfully received part Lot Numbers
                    parts = json.getJSONArray("parts"); // JSON Array

                }else{
                    // part Lot Numbers not not found
                }

            }catch(JSONException e){
                e.printStackTrace();
            }

            //return array of part Lot Numbers
            return parts;
        }

        protected void onPostExecute(JSONArray products){
            //spinner and textview
            spinner = (Spinner) findViewById(R.id.LotNumbers);
            textView = (TextView) findViewById(R.id.partName);

            //list of partLotNumbers
            List<String> partLotNumberList = new ArrayList<String>();

            //move list from JSON to List
            try{
                for(int i=0;i<products.length();i++){
                    JSONObject temp = products.getJSONObject(i);

                    partLotNumberList.add(temp.getString("partLotNumber"));
            }

            //get Part Name
            JSONObject temp = products.getJSONObject(0);
            textView.setText(temp.getString("name"));

            } catch(JSONException e){
                e.printStackTrace();
            }

            //adapter for Spinner           
            ArrayAdapter<String> adp1=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, partLotNumberList);           
            adp1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            //set the adapter to the spinnner
            spinner.setAdapter(adp1);                       
        }

    }
}
公共类ViewOrderlineAssemblyActivity扩展了ListActivity{
//进度对话框
私人对话;
字符串名称;
线状排列;
字符串名称;
//创建JSON解析器对象
JSONParser JSONParser=新的JSONParser();
//获取所有订单列表的url
私有静态字符串url\u get\u assembly\u parts=”http://10.0.2.2/android_connect/get_assembly_parts.php";
//获取所有订单列表的url
私有静态字符串url\u get\u part\u partlotnumbers=”http://10.0.2.2/android_connect/get_part_partLotNumbers.php";
//杰索纳雷命令
JSONArray程序集=null;
JSONArray parts=null;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.all_Assembly);
//从intent获取产品详细信息
Intent i=getIntent();
//从intent获取产品id(pid)
assemblyName=i.getStringExtra(“assemblyName”);
olid=i.getStringExtra(标记olid);
Log.d(“assemblyName”和“+assemblyName”);
//在后台线程中加载订单
新的LoadAllAssemblyParts().execute();
}
//来自编辑订单活动的响应
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
//如果结果代码为100
如果(结果代码==100){
//如果收到结果代码100
//指用户编辑/删除的产品
//重新加载此屏幕
Intent=getIntent();
完成();
星触觉(意向);
}
}
/**
*通过发出HTTP请求加载所有assemblyparts的后台异步任务
* */
类LoadAllAssemblyParts扩展异步任务{
@凌驾
受保护的void onPreExecute(){
}
/**
*从url获取所有订单
* */
受保护的字符串doInBackground(字符串…args){
//建筑参数
List params=new ArrayList();
添加(新的BasicNameValuePair(“assemblyName”,assemblyName));
//从URL获取JSON字符串
JSONObject json=jsonParser.makeHttpRequest(url_get_assembly_parts,“get”,params);
//检查日志cat以获取JSON响应
Log.d(“所有partID:,json.toString());
试一试{
//检查成功标签
int success=json.getInt(TAG_success);
如果(成功==1){
//找到订单
//获取部件数组
assembly=json.getJSONArray(“assembly”);
//循环通过所有部分
对于(int i=0;i<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<!-- Main ListView 
         Always give id value as list(@android:id/list)
    -->
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/partName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Spinner
        android:id="@+id/LotNumbers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>