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

skj1995 2017-10-23 03:09:17
我在一个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>
...全文
193 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2017-10-23
  • 打赏
  • 举报
回复
回调, 事件, 消息 都能实现你的需求. 还有其它进程间, 线程间通信方式都可以用, 只是就要复杂一些了. 也没必要.

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧