不会飞的小菜鸟,求大佬指教:如何在一个ViewPager+TabLayout+Frangment的布局中使用 AsyncTask 功能

作者:超级管理员 更新时间:2017-10-29 07:58:56 来源:未知 点击:15642
我在一个FoodOrderView.java中使用了ViewPager+TabLayou布局,做了两个UnderOrderFragment和NoOrderFragment的Fragment布局来供Fo
我在一个FoodOrderView.java中使用了ViewPager+TabLayou布局,做了两个UnderOrderFragment和NoOrderFragment的

Fragment布局来供FoodView加载使用,现在我想在FoodOrderView.java中加一个 AsyncTask ,实现当点击UnderOrderFragment

中的“结账”时AsyncTask执行虚拟的结账功能,并显示一个进度条。结束后使得“结账”这个按钮不可见。我现在的问题是如何在Food

OrderView中获得UnderOrderFragment中“结账”按钮的点击事件,而且在执行完AsyncTask后如何将“结账”按钮设置为不可见?进

度条是在FoodOrderView布局中实现还是在UnderOrderFragment中实现?有没有大佬说一下具体的实现过程,最好有实现的参考

代码?
主要代码如下:
FoodOrderView.java的代码如下:
public class FoodOrderView extends AppCompatActivity  implements UnderOrderFragment.FOneBtnClickListener {//////////////
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //去除工具栏
        ////getSupportActionBar().hide();
        setContentView(R.layout.food_order_view);
        User user1=(User)getIntent().getSerializableExtra("toFoodOrderView");///////////获得从MainScreen传递过来的参数user
        final User user2=user1;
        initViews();
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("From FoodView OneFragment to FoodOrderView");
        mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), mFragmentList);
        vp.setOffscreenPageLimit(4);//ViewPager的缓存为4帧
        vp.setAdapter(mFragmentAdapter);
        //vp.setCurrentItem(0);//初始设置ViewPager选中第一帧
        mTableLayout = (TabLayout) findViewById(R.id.main_tab);
        mTableLayout.setupWithViewPager(vp);// tab_layout.setupWithViewPager(viewPager);//这两句是将ViewPager和TabLayout联系起来
        mTableLayout.setTabMode(android.support.design.widget.TabLayout.MODE_FIXED);// tab_layout.setTabsFromPagerAdapter(mAdapter); 这三个方法。
        Intent intent=getIntent();
        int page = intent.getIntExtra("page",0);
        vp.setCurrentItem(page);
    }
这是FoodOrderView的XML代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.design.widget.TabLayout
        android:id="@+id/main_tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.design.widget.TabLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/mainViewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>
这是UnderOrderFragment.java的代码:
public class UnderOrderFragment extends Fragment{
    public Button button_checkout;
    public ProgressBar button_myProssBarhandle_under_order;
        public class LengCaiAdapter extends BaseAdapter implements View.OnClickListener {
       
        }
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.DianCai_Button:
                    Log.d("tag", "Btn_onClick: " + "view = " + view);
                    Button mBtn=(Button)view.findViewById(R.id.DianCai_Button);
                    if(mBtn.getText()=="点菜"){
                        mBtn.setText("退点");
                        Toast.makeText(context,"点菜成功",Toast.LENGTH_SHORT).show();
                    }else{
                        mBtn.setText("点菜");
                        Toast.makeText(context,"退点成功",Toast.LENGTH_SHORT).show();
                    }
                    break;
                case R.id.lengcai_name:
                    Log.d("tag", "Tv_onClick: " + "view = " + view);
                    Toast.makeText(context,"我是文本",Toast.LENGTH_SHORT).show();
                    break;
            }
        }
        class ViewHolder{
            TextView mTv;
            Button mBtn;
        }
    }
    class LengCai{
        private String name;
        private int imageId;
        private String price;
        public LengCai(String name,int imageId,String price){
            this.name=name;
            this.imageId=imageId;
            this.price=price;
        }
        public String getName(){
            return name;
        }
        public int getImageId(){
            return imageId;
        }
        public String getPrice(){
            return price;
        }
    }
    @BindView(R.id.lv)
    ListView lv;
    private LengCaiAdapter lvAdapter;
    private List<String> lengcaiList=new ArrayList<>();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_under_order, container, false);//将自定义布局fragment_one加载进来,第二个参数是容器
        ButterKnife.bind(this, view);
        initData();
        button_myProssBarhandle_under_order=(ProgressBar)view.findViewById(R.id.myProssBarhandle_under_order);
        button_checkout=(Button)view.findViewById(R.id.Button_Checkout);///////////////////////////若点击结账
        button_checkout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (getActivity() instanceof FOneBtnClickListener)
                {
                    ((FOneBtnClickListener) getActivity()).onFOneBtnClick();
                }
            }
        });//////////////////////////////////////////////////////////////////////////////////////////////////若点击结账
        return view;
    }
    private void initData() {
        lengcaiList = new ArrayList<String>();
        for (int i = 0; i < 20; i++) {
            lengcaiList.add("凉拌萝卜丝");
            lengcaiList.add("果仁菠菜墩");
            lengcaiList.add("糖拌西红柿");
            lengcaiList.add("冰糖苦瓜");
            lengcaiList.add("香辣卤猪心");
            lengcaiList.add("蒜茄子");
        }
        lvAdapter = new LengCaiAdapter(lengcaiList);//第一个参数为上下文,
        // 第二个参数为一个包含TextView,用来填充ListView的每一行的布局资源ID,第三个参数为ListView的内容
        //simple_list_item_1最为简单,只有一个TextView
        lv.setAdapter(lvAdapter);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(getActivity(), lengcaiList.get(i).toString(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}
这是UnderOrderFragment.XML的代码:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="es.source.code.activity.UnderOrderFragment">
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
 <RelativeLayout android:id="@+id/LinearLayout"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
       <TextView android:id="@+id/Text1"
            android:layout_width="80dp"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:background="#696969"
            android:text="菜品总数:"
            android:textColor="#FFFFFF">
        </TextView>
        <TextView android:id="@+id/Text2"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_above="@+id/Text1"
            android:background="#696969"
            android:text="订单总价:"
            android:textColor="#FFFFFF">
        </TextView>
        <TextView android:id="@+id/Text3"
            android:layout_width="150dp"
            android:layout_height="50dp"
            android:layout_toRightOf="@+id/Text1"
            android:layout_alignTop="@+id/Text1"
            android:background="#696969"
            android:textColor="#FFFFFF">
        </TextView>
        <TextView android:id="@+id/Text4"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/Text3"
            android:layout_toRightOf="@+id/Text2"
            android:layout_alignTop="@+id/Text2"
            android:background="#696969"
            android:layout_alignParentBottom="true"
            android:textColor="#FFFFFF">
        </TextView>
        <Button android:text="结账"
            android:id="@+id/Button_Checkout"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="#00FF7F"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/Text3">
        </Button>
   </RelativeLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:id="@+id/myProssBarhandleText_under_order"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:visibility="gone" />
       <ProgressBar
            android:id="@+id/myProssBarhandle_under_order"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="fill_parent"
            android:layout_height="10dip"
            android:layout_gravity="center"
            android:max="100"
            android:progress="0"
            android:visibility="gone"/>
    </LinearLayout>

</FrameLayout>
-------------------------------
回调,  事件,  消息 都能实现你的需求.
还有其它进程间, 线程间通信方式都可以用, 只是就要复杂一些了. 也没必要.

推荐阅读

热门内容

关于服务器选用

本人菜鸟,以往编写app都是在局域网内测...

android中textview蚊子多显

如图所示,文本字数多了的话最后显示省略号...

【请教大神】webview如何引入swf

我在/res/raw中放入了一个.swf...

模拟器上可以显示我解析的json数据,但

本帖最后由ds1995于2016-05-...

如何层次显示图片缩略图?

如何像下图这样的层次感显示3个缩略图?没...

Android 在 Eclipse 中关

求大佬帮帮忙,很烦这个问题-------...

打开AndroidStudio出现Sta

昨天还可以打开,今天早上打开就出现这个报...

求助!!!关于二级评论的数据错位问题

之前看了通过Android Listvi...

安卓开发一些新手问题

第一个问题为什么会报错?第二个问题为什么...

tablayout的tab能将图标放大点

本帖最后由qq_37587427于201...

最新内容

不会飞的小菜鸟,求大佬指教:如何在一个ViewPager+TabLayout+Frangment的布局中使用 AsyncTask 功能

我在一个FoodOrderView.java中使用了ViewPager+TabL...

iPhone X预订量打破记录 努力增加出货

    iPhone X自昨天正式开启预购之后,其价格已经被黄牛炒到一倍之多,由...

有关tomcat出错信息

十月 27, 2017 11:01:01 下午 org.apache.tomca...

一直报无法解析.hbm.xml 困扰了 一天一夜很受打击

一直报无法解析.hbm.xml   困扰了 一天一夜很受打击求大神看看哪里错了-...

一直报Could not parse mapping document from resource疯了!!!

这问题整整困扰了 我一天一夜  请大神帮我看看-----------------...

前端表格中文排序插件

有人用过表格排序插件吗,tablesorter使用过,也用过textsort属性...

tomcat配置了域名以后启动闪退问题

以下是配置后的文件内容,请问是不是少加什么东西啊

tomcat 部署项目报 Failed to start component 错误

严重: ContainerBase.addChild: start: org.a...

项目在本地可访问,发布到服务器就报405

我的项目是maven项目,在本地idea启动后,路径http://localho...

美图V6现身工信部 摄像头升级值得期待

    众所周知,美图旗下有三大系列,也就是T系列、M系列、V系列,截至日前,美...

【java可以定义子类的子类么】

如果可以的话,那么要调用最外层的父类方法,是不是还要用两个super啊:supe...

Mongo统计数据量

Mongodb.collect.find(查询条件).count() 这样用co...

如何在Service层做校验?

SpringMVC使用HibernateValidator,只会对前端传来的数据...

请输入正确的email,表达式是否有错?

这个是mvmmall\templates\default文件夹下的一个regis...

动态更换Launch Image启动图片

大家好,有个“动态更换启动页图片”需求请大家给点意见:第一次启动app的时候才用...

将第三方framework打包到自己的framework中,报错!!!

      最近正在做静态库framework,需要将AlipaySDK.fra...

3999元起 索尼三款旗舰新机发布刷信仰

    中关村在线消息:10月27日下午,索尼XperiaTM秋季新品发布会在北...

什么原因造成mysql无法保存数据

1、我删除了所有表的主外键关联2、也没找到value=“无聊”的问题,什么意思?...

javascript问题,求大神指点!!!

下面这段代码,为啥变量a的值还是javascript呢?不应该是全局变量么?和p...

vs2015 字体 不能加粗 什么原因呢

设置了  粗体  可是根本没任何效果这是咋回事呢?换个字体然后选中加粗试试你的图...