进度栏无法隐藏

时间:2018-06-28 07:06:14

标签: android

我一直在尝试向我的应用添加进度条,该进度条在单击登录按钮时显示。
我的问题是我似乎无法隐藏进度条。
我尝试设置pBar.setVisibility(View.GONE);,但不起作用。 Android Studio没有显示任何错误。进度栏只是始终保持可见状态。

此外,起初一切都运行良好,当我在应用程序中添加导航抽屉活动并通过该活动向登录活动发送意图后,就会出现此问题。
是发送问题的故意原因吗?

activity_login.xml

这是我在xml中添加进度栏的方式。

<ProgressBar
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:id="@+id/progressBarLogin"
    android:indeterminateTint="@color/colorPrimary"
    android:layout_centerInParent="true"/>   

LoginActivity.java

这就是我要隐藏它的方式

public class LoginActivity extends AppCompatActivity {

ProgressBar pBar;
Button login;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    pBar = findViewById(R.id.progressBarLogin);

    pBar.setVisibility(View.GONE); //THIS LINE OF CODE IS NOT WORKING

    login = findViewById(R.id.login);  
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v){
            runOnUiThread(new Runnable(){
                @Override
                public void run(){
                    pBar.setVisibility(View.VISIBLE);
                }
            });

            try{
                //Background login tasks
            }catch(Exception e){
                pBar.setVisibility(View.GONE);
                e.printStackTrace();
            }
        }
    });
}

编辑-对于所有指出pBar.setVisibility(View.GONE);在catch块中并因此没有运行的人来说,这段代码运行得很好。问题是,当我尝试一开始隐藏pbar时,该行似乎根本不起作用。

7 个答案:

答案 0 :(得分:2)

在完成后台任务(即移至另一项活动)后,尝试在try块中添加以下行

pBar.setVisibility(View.GONE);

try块内。

答案 1 :(得分:1)

尝试一下

android:visibility = "gone"

在xml文件中。

答案 2 :(得分:1)

尝试pBar.setVisibility(View.Gone),它将隐藏您的进度栏。如果进度条仍然可见。

临时解决方案

Progress Bar放在Layout中,并使用Layout.setVisiblity(View.GONE)

隐藏布局

答案 3 :(得分:0)

您需要在try块下写入pBar.setVisibility(View.GONE);

答案 4 :(得分:0)

进度条是视图,但是您必须在一段时间或任务后将其关闭。在您的代码中,其唯一可见的并在catch中关闭是错误的,可能是catch无法执行。因此,如果要显示和关闭,则必须首先使其可见,并在几秒钟后将调用方法变为不可见或不可见。

pBar.setVisibility(View.VISIBLE);
     new Timer().schedule(new TimerTask() {          
        @Override
        public void run() {
            // this code will be executed after 2 seconds 
pBar.setVisibility(View.GONE);      
        }
    }, 2000);

希望这会有所帮助。

答案 5 :(得分:0)

删除尝试捕获块。

然后尝试运行...它将起作用... 100%

尝试并在run方法中捕获块代码...。它将起作用。 我已经检查过了...。它工作正常...

答案 6 :(得分:0)

尝试将android:visibility="invisible"添加到您的.xml文件中。还是您可能会看到其他活动的进度条?