綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] viewpager2 跟 fragment刷新加載問題

[複製連結] 查看: 29301|回覆: 2|好評: 0
跳轉到指定樓層
樓主
lkk7890j35 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2021-6-25 01:03

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
問題是當我點擊更新資料後跳轉到另一個fragment,然後更新完送出後,回到viewpager2畫面不會同步更新,反而要滑動viewpager2,再滑回才會更新
debug看的時候是他跳轉回來 不會再去呼叫createFragment
希望各位可以幫幫我 這問題卡了很久

以下是viewpager2程式碼:
public class discussionBoardFragment extends Fragment {
    private Activity activity;
    private List<Fragment> list = new ArrayList<>();
    private String[] title = {"租屋交流", "知識問答", "需求單"};
    private ViewPager2 viewPager;
    private TabLayout disTab;


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

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        activity = getActivity();
        View view = inflater.inflate(R.layout.fragment_discussion_board, container, false);
        findViews(view);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull @NotNull View view, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);


        viewPager.setAdapter(new MyAdapter(activity));
        TabLayoutMediator tab = new TabLayoutMediator(disTab, viewPager, new TabLayoutMediator.TabConfigurationStrategy() {
            @Override
            public void onConfigureTab(@NonNull @NotNull TabLayout.Tab tab, int position) {
                tab.notifyAll();
                switch (position){
                    case 0:
                        tab.setText("租屋交流");
                        break;
                    case 1:
                        tab.setText("知識問答");
                        break;
                    case 2:
                        tab.setText("需求單");
                        break;
                }
            }
        });
        tab.attach();
    }


    private void findViews(View view) {
        viewPager = view.findViewById(R.id.dis_viewPage2);
        disTab = view.findViewById(R.id.dis_tabview);
    }

    public class MyAdapter extends FragmentStateAdapter {
        public MyAdapter(@NonNull Activity fragmentActivity) {
            super((FragmentActivity) fragmentActivity);
        }

        @Override
        public int getItemCount() {
            return 3;
        }

        @NotNull
        @Override
        public Fragment createFragment(int position) {

            switch (position)
            {
                case 0:
                    return new discussionBoard_RentHouseFragment();
                case 1:
                    return new discussionBoard_KnowledgeFragment();
                default:
                    return new discussionBoard_RentSeekingFragment();
                    
            }
        }

    }

}

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
 樓主| lkk7890j35 | 收聽TA | 只看該作者
發表於 2021-6-25 01:05
這之後是viewpager2下的fragment:


public class discussionBoard_RentSeekingFragment extends Fragment {
    private final static String TAG = "TAG_RentSeekingFragment";
    private RecyclerView rv_seeking;
    private Activity activity;
    private SwipeRefreshLayout swipeRefreshLayout;
    private FirebaseStorage storage;
    //外部列表 第一頁 列表
    private List<Post> posts;
    // 假資料
//    private List<Book> books;
    private SearchView searchView;
    private FloatingActionButton bt_Add;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activity = getActivity();
        storage = FirebaseStorage.getInstance();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_discussion_board_rent_seeking, container, false);
    }

    @Override
    public void onViewCreated(@NonNull @NotNull View view, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        findViews(view);
        handleRecyclerView();


        handleBtAdd();
        handleSearchView();
        handleSwipeRefresh();
    }



    @Override
    public void onResume() {
        super.onResume();
        Log.d(TAG,"onResume");
        posts = getPosts();
        showPosts(posts);
    }

    private void findViews(View view) {
        searchView = view.findViewById(R.id.searchView_dis);
        swipeRefreshLayout = view.findViewById(R.id.swipeRefreshLayout_seek);
        rv_seeking = view.findViewById(R.id.rv_seeking);
        bt_Add = view.findViewById(R.id.dis_bt_Add);
    }

    private void handleSwipeRefresh() {
        swipeRefreshLayout.setOnRefreshListener(() -> {
            //開始動畫
            swipeRefreshLayout.setRefreshing(true);
            //重新載入recycleView
            showPosts(posts);
            //結束動畫
            swipeRefreshLayout.setRefreshing(false);

        });
    }

    private void handleSearchView() {
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextChange(String newText) {
                //如果輸入條件為空字串,就顯示原始資料,否則就顯示收尋後結果
                if (newText.isEmpty()) {
                    showPosts(posts);
                } else {
                    List<Post> searchPosts = new ArrayList<>();
                    //搜尋原始資料內有無包含關鍵字(不區分大小寫)
                    for (Post post : posts) {
                        if (post.getPostTitle().toUpperCase().contains(newText.toUpperCase())) {
                            searchPosts.add(post);
                        }
                    }
                    showPosts(searchPosts);
                }
                return true;
            }
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }
        });
    }


    private void handleBtAdd() {
        //跳轉至新增頁面
        bt_Add.setOnClickListener(v -> Navigation.findNavController(v)
                .navigate(R.id.action_discussionBoardFragment_to_discussionInsertFragment2));
    }

    private void handleRecyclerView() {

        rv_seeking.setLayoutManager(new LinearLayoutManager(activity));
        rv_seeking.addItemDecoration(new ItemDecoration(30, activity));//30代表30dp
    }


    //連線資料庫取資料
    private List<Post> getPosts() {
        List<Post> posts = null;
        if (RemoteAccess.networkCheck(activity)) {
            String url = Common.URL + "DiscussionBoardController";
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("action", "getAll");
            String jsonIn = RemoteAccess.getJsonData(url, jsonObject.toString());
            Type listType = new TypeToken<List<Post>>() {
            }.getType();

            //解析後端傳回資料
            posts = new Gson().fromJson(jsonIn, listType);
        } else {
            Toast.makeText(activity, "no network connection available", Toast.LENGTH_SHORT).show();
        }
        Toast.makeText(activity, "posts : " + posts, Toast.LENGTH_SHORT).show();
        return posts;
    }


    private void showPosts(List<Post> posts) {
        if (posts == null || posts.isEmpty()) {
            Toast.makeText(activity, "no posts found", Toast.LENGTH_SHORT).show();
        }
        //取得Adapter
        SeekAdapter seekAdapter = (SeekAdapter) rv_seeking.getAdapter();
        // 如果spotAdapter不存在就建立新的,否則續用舊有的
        if (seekAdapter == null) {
            rv_seeking.setAdapter(new SeekAdapter(activity, posts));
        } else {
            //更新Adapter資料,重刷
            seekAdapter.setAdapter(posts);

            //重新執行RecyclerView 三方法
            seekAdapter.notifyDataSetChanged();
        }
    }


    private class SeekAdapter extends RecyclerView.Adapter<SeekAdapter.MyViewHolder> {
        private final LayoutInflater layoutInflater;
        private final int imageSize;
        //內部列表(搜尋後)
        private List<Post> posts;



        public SeekAdapter(Context context, List<Post> posts) {
            layoutInflater = LayoutInflater.from(context);
            this.posts = posts;
            //螢幕寬度除以四當圖片尺寸
            imageSize = getResources().getDisplayMetrics().widthPixels / 4;
        }

        //        重刷RecyclerView畫面
        public void setAdapter(List<Post> posts) {
            this.posts = posts;
        }


        public class MyViewHolder extends RecyclerView.ViewHolder {
            TextView disPostName, disPostTitle, disPostContext, disPostTime;
            ImageButton disPostBtMore, disPostMemberImg;
            ImageView disPostImg;

             MyViewHolder(@NonNull @NotNull View itemView) {
                super(itemView);
                disPostTitle = itemView.findViewById(R.id.post_item_title_text);
                disPostName = itemView.findViewById(R.id.post_item_memberName_text);
                disPostContext = itemView.findViewById(R.id.post_item_context_text);
                disPostImg = itemView.findViewById(R.id.post_item_house_img);
                disPostBtMore = itemView.findViewById(R.id.post_item_bt_more);
                disPostMemberImg = itemView.findViewById(R.id.post_item_bt_memberhead);
                disPostTime = itemView.findViewById(R.id.post_item_time_text);
            }
        }

        @Override
        public int getItemCount() {
            return posts == null ? 0 : posts.size();
        }




        @NotNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) {
            View itemView = layoutInflater.inflate(R.layout.discussion_itemview, null, false);
            return new MyViewHolder(itemView);
        }

        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onBindViewHolder(@NonNull @NotNull discussionBoard_RentSeekingFragment.SeekAdapter.MyViewHolder holder, int position) {

            final Post post = posts.get(position);
            holder.disPostTitle.setText(post.getPostTitle());
            //TODO
            holder.disPostName.setText("6");
            holder.disPostContext.setText(post.getPostContext());
            holder.disPostTime.setText(post.getCreateTime().toString());
            //設定點擊事件
            holder.disPostImg.setOnClickListener(v -> {
                Bundle bundle = new Bundle();
                bundle.putSerializable("post", post);
                //轉至詳細頁面
//                Navigation.findNavController(v).navigate(R.id.action_discussionBoardFragment_to_discussionDetailFragment3, bundle);
            });

            String url = Common.URL + "DiscussionBoardController";
            int postId = post.getPostId();
            String imagePath = post.getPostImg();
            JsonObject jsonObject =  new JsonObject();
            jsonObject.addProperty("action","getImage");
            jsonObject.addProperty("imagePath",imagePath);
            jsonObject.addProperty("postId", postId);
            jsonObject.addProperty("imageSize", imageSize);
            String jsonImg = RemoteAccess.getJsonData(url, jsonObject.toString());
            if (jsonImg != null) {
                showImage(holder.disPostImg, imagePath);
            } else {
                holder.disPostImg.setImageResource(R.drawable.no_image);
            }
            holder.disPostBtMore.setOnClickListener(v -> {
                //選單
                PopupMenu popupMenu = new PopupMenu(activity,v, Gravity.END);
                popupMenu.inflate(R.menu.popup_menu);
                popupMenu.setOnMenuItemClickListener(item -> {
                    int itemId = item.getItemId();
                    //新增
                    if (itemId == R.id.update){
                        Bundle bundle = new Bundle();
                        bundle.putSerializable("post",post);
                        Navigation.findNavController(v).navigate(R.id.action_discussionBoardFragment_to_discussionUpdateFragment,bundle);
                        //刪除
                    } else if (itemId == R.id.delete) {
                        if (RemoteAccess.networkCheck(activity)){
                            JsonObject jsonDelete = new JsonObject();
                            jsonDelete.addProperty("action","postDelete");
                            jsonDelete.addProperty("postId",post.getPostId());
                            int count;
                            String result = RemoteAccess.getJsonData(url,jsonDelete.toString());
                            count = Integer.parseInt(result);
                            if (count == 0) {
                                Toast.makeText(activity, "刪除失敗", Toast.LENGTH_SHORT).show();
                            } else {
                                posts.remove(post);
                                SeekAdapter.this.notifyDataSetChanged();
                                // 外面spots也必須移除選取的spot
                                discussionBoard_RentSeekingFragment.this.posts.remove(post);
                                storage.getReference().child(post.getPostImg()).delete()
                                        .addOnCompleteListener(task -> {
                                            if (task.isSuccessful()) {
                                                Log.d(TAG, "照片已刪除");
                                            } else {
                                                String message = task.getException() == null ? "照片刪除失敗" + ": " + post.getPostImg() :
                                                        task.getException().getMessage() + ": " + post.getPostImg();
                                                Log.e(TAG, message);
                                                Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
                                            }
                                        });

                                Toast.makeText(activity, "刪除成功", Toast.LENGTH_SHORT).show();
                                }
                            //檢舉
                        } else if (itemId == R.id.report) {
//                            Navigation.findNavController(v).navigate("路徑");
                        } else {
                            Toast.makeText(activity, "沒有網路連線", Toast.LENGTH_SHORT).show();
                        }
                    }
                    return true;
                });
                popupMenu.show();
                return;
            });
        }

        // 下載Firebase storage的照片並顯示在ImageView上
        private void showImage(final ImageView imageView, final String path) {
            final int ONE_MEGABYTE = 1024 * 1024;
            StorageReference imageRef = storage.getReference().child(path);
            imageRef.getBytes(ONE_MEGABYTE)
                    .addOnCompleteListener(task -> {
                        if (task.isSuccessful() && task.getResult() != null) {
                            byte[] bytes = task.getResult();
                            Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
                            imageView.setImageBitmap(bitmap);
                        } else {
                            String message = task.getException() == null ?
                                    "Image download Failed" + ": " + path : task.getException().getMessage() + ": " + path;
                            Log.e(TAG, message);
                            Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
                        }
                    });
        }

    }
}
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| lkk7890j35 | 收聽TA | 只看該作者
發表於 2021-6-25 01:07
以下這是新增頁面的fragment:

public class discussionInsertFragment extends Fragment {
    private static final String TAG = "TAG_dis_InsertFragment";
    private FragmentActivity activity;
    private EditText etTitle, etContext;
    private ImageButton insert_bt_push, insert_bt_memberHead;
    private TextView insert_MemberName, insert_board;
    private Spinner insert_spinner;
    private String imagePath;
    private FirebaseStorage storage;
    private byte[] image;
    private File file;
    private Uri contentUri;
    private ImageView insert_bt_picture;
    private boolean pictureTaken;
    private String url = Common.URL ;


    ActivityResultLauncher<Intent> takePictureLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(), this::takePictureResult);

    ActivityResultLauncher<Intent> pickPictureLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(), this::pickPictureResult);

    ActivityResultLauncher<Intent> cropPictureLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(), this::cropPictureResult);

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activity = getActivity();
        storage = FirebaseStorage.getInstance();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_discussion_insert, container, false);
        return view;
    }

    @Override
    public void onViewCreated(@NonNull @NotNull View view, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        findViews(view);
        handleSpinner();
        handleInsert_bt_picture();
        handleFinishInsert(view);

    }

    private void findViews(View view) {
        insert_bt_picture = view.findViewById(R.id.insert_bt_image);
        insert_bt_memberHead = view.findViewById(R.id.insert_bt_memberHead);
        insert_bt_push = view.findViewById(R.id.insert_bt_insert);
        insert_spinner = view.findViewById(R.id.insert_spinner);
        etTitle = view.findViewById(R.id.insert_et_title);
        etContext = view.findViewById(R.id.insert_et_context);
        insert_MemberName = view.findViewById(R.id.insert_memberName_text);
        insert_board = view.findViewById(R.id.insert_board);

    }

    //控制spinner
    private String handleSpinner( ) {
                                             //index:0    index:1   index:2
        List<String> itemList = Arrays.asList("租屋交流", "知識問答", "需求單");
        //實例化Adapter物件,並設定選項的外觀
        ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, itemList);
        //設定展開時的外觀
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //設定Adapter
        insert_spinner.setAdapter(adapter);
        //設定預選選項
        insert_spinner.setSelection(0, false);

        //註冊/實作 選項被選取監聽器
        insert_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                insert_board.setText(insert_spinner.getSelectedItem().toString());

            }


            @Override
            public void onNothingSelected(AdapterView<?> parent) {

                TextView errorText = (TextView) insert_spinner.getSelectedView();
                errorText.setError("");
                //just to highlight that this is an error
                errorText.setTextColor(Color.RED);
                //changes the selected item text to this
                errorText.setText("請選擇板塊");

                ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, new String[]{""});
                insert_spinner.setAdapter(adapter);

            }
        });
        return  insert_spinner.getSelectedItem().toString();
    }

    private void handleInsert_bt_picture() {

        //初始化BottomSheet
        BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(activity);
        //連結的介面
        View view = LayoutInflater.from(activity).inflate(R.layout.bottom_sheet, null);
        //自定義的三個按鈕
        Button btCancel = view.findViewById(R.id.btCancel);
        Button bt_pickPicture = view.findViewById(R.id.btPickpic);
        Button bt_takePicture = view.findViewById(R.id.btTakepic);
        //將介面載入至BottomSheet內
        bottomSheetDialog.setContentView(view);
        //取得BottomSheet介面設定
        ViewGroup parent = (ViewGroup) view.getParent();
        //將背景設為透明,否則預設白底
        parent.setBackgroundResource(android.R.color.transparent);

        //按鈕控制
        bt_takePicture.setOnClickListener(v -> {
            //開啟拍照
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            //指定儲存路徑
            file = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            file = new File(file, "picture.jpg");
            contentUri = FileProvider.getUriForFile(activity, activity.getPackageName() + ".fileProvider", file);
            //取得原圖
            intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri);
            try {
                takePictureLauncher.launch(intent);
            } catch (ActivityNotFoundException e) {
                Toast.makeText(activity, "找不到相機應用程式", Toast.LENGTH_SHORT).show();
            }
        });


        bt_pickPicture.setOnClickListener(v -> {
            Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            pickPictureLauncher.launch(intent);
        });

        insert_bt_picture.setOnClickListener((v)->{
            //顯示BottomSheet
            bottomSheetDialog.show();
        });

        btCancel.setOnClickListener(v -> {
            bottomSheetDialog.dismiss();

        });

    }

    private void handleFinishInsert(View view) {
        insert_bt_push.setOnClickListener(v -> {
            //取得user輸入的值
            String title = etTitle.getText().toString().trim();
            if (title.length() <= 0) {
                Toast.makeText(activity, "Title is invalid", Toast.LENGTH_SHORT).show();
                return;
            }
            String context = etContext.getText().toString().trim();
            if (context.length() <= 0){
                Toast.makeText(activity, "context is invalid", Toast.LENGTH_SHORT).show();
                return;
            }
            if (RemoteAccess.networkCheck(activity)) {
                //用json傳至後端
                url += "DiscussionBoardController";
                Post post = new Post(0, insert_spinner.getSelectedItem().toString(), 0, title, context, imagePath);
                JsonObject jsonObject = new JsonObject();
                jsonObject.addProperty("action", "postInsert");
                jsonObject.addProperty("post", new Gson().toJson(post));
                int count;
                //執行緒池物件
                String result = RemoteAccess.getJsonData(url, jsonObject.toString());
                //新增筆數
                count = Integer.parseInt(result);
                //筆數為0
                if (count == 0) {
                    Toast.makeText(activity, "新增失敗", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(activity, "新增成功", Toast.LENGTH_SHORT).show();

                    NavController navController = Navigation.findNavController(view);
                    navController.popBackStack();
                }
            } else {
                Toast.makeText(activity, "沒有網路連線", Toast.LENGTH_SHORT).show();
            }
        });

    }

    private void takePictureResult(ActivityResult result) {
        if (result.getResultCode() == RESULT_OK) {
            //呼叫截圖
            crop(contentUri);
        }
    }

    private void pickPictureResult(ActivityResult result) {
        if (result.getResultCode() == RESULT_OK) {
            if (result.getData() != null) {
                crop(result.getData().getData());
            }
        }
    }

    //來源圖路徑
    private void crop(Uri sourceImageUri) {
        //截完圖要放的路徑
        File file = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        file = new File(file, "picture_cropped.jpg");
        //要儲存的URI
        Uri destinationUri = Uri.fromFile(file);
        //UCrop.of:給來源給目的並建立Intent物件
        Intent cropIntent = UCrop.of(sourceImageUri, destinationUri).getIntent(activity);
        //呼叫cropPictureLauncher 開啟Ucrop
        cropPictureLauncher.launch(cropIntent);
    }

    private void cropPictureResult(ActivityResult result) {
        if (result.getResultCode() == RESULT_OK && result.getData() != null) {
            //取出截完的結果圖
            Uri resultUri = UCrop.getOutput(result.getData());
            if (resultUri != null) {
                uploadImage(resultUri);
            }
        }
    }

    private String uploadImage(Uri resultUri) {


        //取得根目錄
        StorageReference rootRef = storage.getReference();
        imagePath = getString(R.string.app_name) + "/Discussion_insert/" + System.currentTimeMillis();

        //建立當下目錄的子路徑
        final StorageReference imageRef = rootRef.child(imagePath);
        //將儲存照片上傳 檔案
        imageRef.putFile(resultUri)
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful()) {
                        String message = "上傳成功";
                        Log.d(TAG, message);
                        Toast.makeText(activity, "上傳結果: " + message, Toast.LENGTH_SHORT).show();
                        //下載剛上傳的照片
                        downloadImage(imagePath);

                    } else {
                        String message = task.getException() == null ? "Upload fail" : task.getException().getMessage();
                        Log.e(TAG, "message: " + message);
                        Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
                    }
                });
        return imagePath;
    }

    private void downloadImage(String imagePath) {
        final int ONE_MEGABYTE = 1024 * 1024;
        StorageReference imageRef = storage.getReference().child(imagePath);
        //最多能暫存記憶體的量
        imageRef.getBytes(ONE_MEGABYTE)
                .addOnCompleteListener(task -> {
                    if (task.isSuccessful() && task.getResult() != null) {
                        image = task.getResult();
                        //轉bitmap呈現前端
                        Bitmap bitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
                        insert_bt_picture.setImageBitmap(bitmap);
                    } else {
                        String message  = task.getException() == null ? "Download fail" : task.getException().getMessage();
                        Log.e(TAG, "message: " + message);
                        Toast.makeText(activity, message , Toast.LENGTH_SHORT).show();
                    }
                });
    }

}
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則