进度条无法隐藏

3
我一直在尝试为我的应用程序添加一个进度条,当登录按钮被点击时出现。
我的问题是我似乎无法隐藏进度条。
我尝试设置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时,该行似乎根本不起作用。


3
你的 catch 块没有调用。 - IntelliJ Amiya
你的try块里面没有任何内容,它怎么会进入catch块并将setVisibility设置为GONE呢? - tahsinRupam
在线程中,程序可能无法运行或者运行不流畅。尝试使用AsyncTask。 - ariful islam arif
我有一段位于try代码块中的代码。仅为了这个问题,我使用注释替换了代码。 - Mayank_kr_verma
7个回答

2

在完成后台任务(例如移动到另一个活动)后,在try块中添加以下行:

pBar.setVisibility(View.GONE);

try块内部的代码。


2
或者我们可以将这个代码块放在 finally 块中。 - meShakti

1
尝试使用pBar.setVisibility(View.Gone)来隐藏进度条。如果进度条仍然可见。
临时解决方案:
将您的Progress Bar放入Layout中,并使用Layout.setVisiblity(View.GONE)来隐藏布局。

0

尝试在您的 .xml 文件中添加 android:visibility="invisible"。或者您可能从其他活动中看到进度条?


0

试试这个

android:visibility = "gone"

在XML文件中。

0

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


0

移除 try catch 块。

然后尝试运行...它会工作...100%。

或者

将 try & catch 块代码放入 run 方法中...它会工作... 我已经检查过了...它可以正常工作...


-1
进度条是一个视图,但你必须在一段时间或任务后关闭它。在你的代码中,它只在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);

希望这能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接