java - 关闭 NavigationDrawer 并在获取数据时显示加载

标签 java android

我目前有一个抽屉导航,其中每个选项都会调用服务器以获取数据。这是通过我创建的一个类完成的,该类接收调用类型作为字符串并在 AsyncTask 中发出请求,返回检索到的数据。

我面临的问题是,由于延迟,抽屉导航在执行请求和解析数据时保持打开状态,这让用户误以为它崩溃了。

我希望它在操作未完成时关闭并显示 ProgressDialog。我当前的代码不起作用,知道为什么吗?提前致谢

@Override
public boolean onNavigationItemSelected(MenuItem item) {
    int id = item.getItemId();

    this.mDrawer.closeDrawer(GravityCompat.START);
    this.mDialog.show();

    if (id == R.id.nav_data) {
        this.dataList = this.myGetterClass.getRequests("some/API/route");
        try {
            if (this.dataList.size() == 0) {
                setTitle("There's no data");
            } else {
                setTitle("Here's the data");
            }
        } catch (Exception e) {
            setTitle("Without data");
            Toast error = Toast.makeText(getApplicationContext(), "Something went wrong", Toast.LENGTH_LONG);
            error.show();
        }
    }
    updateScreen(this.dataList);
    this.mDialog.dismiss();
    return true;
}

最佳答案

要关闭抽屉,您需要更换

 mDrawer.closeDrawer(GravityCompat.START);

mDrawerLayout.openDrawer(Gravity.LEFT);//这里是抽屉打开的抽屉重力

要显示进度对话框,最好的方法是将进度放在 asynktask 中

if (id == R.id.nav_data) {
   //call asynk task for getting server data
}else if(id == R.id.nav_data1){
 //call asynk task for getting server data
}     

检查此以获取有关 AsynkTask 的更多信息和 this

关于java - 关闭 NavigationDrawer 并在获取数据时显示加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46710481/

相关文章:

java - 如何加入现有的 SwingWorker

java - Spring MessageSource 似乎忽略了属性 fallbackToSystemLocale

java - 将字符串从控制台输入传递到 TCP 套接字

Android Button onClick 监听器错误?

java - 全图像适配器错误

java - 不完全确定如何初始化这些变量

java - 如何检查字符串仅包含字母(大写和小写)和至少一个数字

java - 如何从 firestore 检索我的 Geopoint 对象

android - 创建和使用从位图创建的 Android map 标记的正确方法?

android - 无法将 Google Play 定位服务作为依赖项添加到我的 Android 项目