提问者:小点点

在AsyncTask中取消装箱整数[]


我试图使用AsyncTask用AWS的数据填充几个TextViews。为了从AWS加载数据,我必须提交一个范围键值,它是一个int。AsyncTask只允许将整数作为参数发送。

问题:如何将整数参数拆箱为int,以便将原始int发送给AWS(在doInBackground期间)并抓取数据?

(slots是标识我想为视图获取的数据的变量)

代码:@ Override public View oncreate View(layoutin flater inflater,ViewGroup container,Bundle savedInstanceState){ final View View = inflater . inflate(r . layout . fragment _ profile,container,false);

    class LoadPost extends AsyncTask<Integer, Void, Post> {
        @Override
        protected Post doInBackground(Integer... slots) {

            int i = (int) slots; <=this does not work

            Post post = AmazonCredentials.getInstance().mapper.load(Post.class, userID, slots);
            return post;
        }
        protected void onPostExecute(Post post) {
            int slotNumber = post.getSlotNumber();

            int resID = getResources().getIdentifier("slot"+slotNumber, "id", "package name goes here");

            TextView slot = (TextView) view.findViewById(resID);
            slot.setText(post.getContent());
        }
    }

共1个答案

匿名用户

不需要拆箱。参考任意数量的参数,看看当你说参数是整数类型…你在方法中实际使用的是整数[]即使我们只传递一个项目,它也会在数组中,所以你可以这样做:

slots[0]; //3 or whatever integer

我们不需要做任何其他事情,因为自动装箱会像名称所暗示的那样处理相应对象中的装箱和取消装箱原始值,反之亦然