简体   繁体   English

执行doInBackground(AsyncTask) - onCreate(Bundle savedInstanceState)

[英]Executing doInBackground (AsyncTask) - onCreate(Bundle savedInstanceState)

below is my code that does not execute anything under the doInBackground do you guys see anything wrong i am doing?, i am just adding items in the object called "Order" and show the view. 下面是我的代码,在doInBackground下没有执行任何内容你们看到我做错了吗?我只是在名为“Order”的对象中添加项目并显示视图。

any help? 任何帮助?

private ArrayList<Order> m_orders = null;
private OrderAdapter m_adapter;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);   

    setContentView(R.layout.main);
    m_orders = new ArrayList<Order>();

    new taskDoSomething().execute(); 

    this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
    setListAdapter(this.m_adapter);  
}



private class taskDoSomething extends AsyncTask<Void, Void, Void> 
{ 

    @Override 
    protected Void doInBackground(Void... params) { 

        Log.i("LOGGER", "Starting...doInBackground loadList"); 

        m_orders = new ArrayList<Order>();

        Order o1 = new Order();
        o1.setOrderName("songs_array[0]");
        o1.setOrderStatus("Pending");
        o1.setQuantity(111);
        m_orders.add(o1);

        return (null); 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
        Log.i("LOGGER", "...Done doInBackground loadList"); 
    } 
}  

Better: 更好:

private class taskDoSomething extends AsyncTask<Void, Void, List<Order>>  { 

@Override 
protected List<Order> doInBackground(Void... params) { 

    Log.i("LOGGER", "Starting...doInBackground loadList"); 

    List<Order> orders = new ArrayList<Order>();


    Order o1 = new Order();
    o1.setOrderName("songs_array[0]");
    o1.setOrderStatus("Pending");
    o1.setQuantity(111);
    orders.add(o1);

    return orders; 
} 

@Override 
protected void onPostExecute(List<Order> result) { 
    m_orders.clear();
    m_orders.addAll(result); 
    m_adapter.notifyDataSetChanged();
} 

} }

you need to runOnUIThread() when changing m_orders 更改m_orders时需要runOnUIThread()

why are you init m_orders twice? 你为什么两次提出m_orders?

I think you are getting List null. 我认为你得到List null。 Please use following code in postExecute() method of AsyncTask : 请在AsyncTask的postExecute()方法中使用以下代码:

if(0!= m_orders.size())

this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
    setListAdapter(this.m_adapter);  

Remove above line from onCreate() method.... 从onCreate()方法中删除上面的行....

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 什么是 onCreate(Bundle savedInstanceState) - What's onCreate(Bundle savedInstanceState) FragmentActivity在onCreate savedInstanceState Bundle中的NullPointer - FragmentActivity NullPointer in onCreate savedInstanceState Bundle 已经定义“ onCreate(捆绑保存的InstanceState)” - “onCreate(Bundle savedInstanceState)” is already defined onCreate(Bundle savedInstanceState)始终为null - onCreate(Bundle savedInstanceState) in always null Android AsyncTask不执行doInBackground - Android AsyncTask not executing doInBackground AsyncTask/doInBackground 未执行 - AsyncTask/doInBackground not executing 在onCreate(Bundle savedInstanceState)中创建捆绑对象的位置在哪里 - Where is Bundle object created in onCreate(Bundle savedInstanceState) 捆绑的saveInstanceState在onCreate()上为null,尽管saveInstanceState已经设置了数据 - Bundle savedInstanceState is null on onCreate() although savedInstanceState is already set data 两个 oncreate(bundle savedinstancestate) 在同一个活动中? - Two oncreate(bundle savedinstancestate) in the same activity? Android kotlin onCreate(savedInstanceState: Bundle?) 导致 IllegalArgumentException - Android kotlin onCreate(savedInstanceState: Bundle?) cause IllegalArgumentException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM