web-dev-qa-db-ja.com

setProgressBarIndeterminateVisibility(true)が機能しない

ActionBarにプログレスバーを追加しようとしています。私は回転する円について話している。リクエストして設定しようとしたのですが、何も起こりません。私は多くのありそうな質問を読みましたが、それでも私が間違っていることを理解することができませんでした。

私のコード:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//Above setContentView, very important
    setContentView(R.layout.activity_main);
    //...other stuff
}

Createで呼び出さない他のメソッド(onClickメソッドです)

public void plus(View view){
    setProgressBarIndeterminateVisibility(true);//Nothing happens
    //...other stuff
}

何が悪いのかわかりません。助けてください。

注:falseに設定したことはありません

編集:私はmmloolooの第2部を試しましたが、絶対に気づきました。パート3でもありません。パート4を試しましたが、例外を与えました。

「このアクティビティには、ウィンドウの装飾によって提供されるアクションバーが既にあります。代わりにツールバーを使用するには、Window.FEATURE_ACTION_BARを要求せず、テーマでwindowActionBarをfalseに設定してください。」

Window.FEATURE_ACTION_BARリクエストを削除しましたが、同じ例外が発生しました。 windowActionBarをfalseに設定する必要はないと思いますが、設定しても同じ例外が発生しました。

他のオプションはありますか?

11
Robin Dijkhof

最初:

ウィンドウが提供するプログレスバーは、ツールバーで非推奨になりました。

2番目:

使用する必要があります:

setSupportProgressBarIndeterminateVisibility(true);

の代わりに

setProgressBarIndeterminateVisibility(true);

ActionBarActivityを拡張するためです。 (supportRequestWindowFeatureの代わりにrequestWindowFeatureを使用しているため)

第3:

クラッシュした場合、これは既知の issue です。ライブラリが更新されて申し訳ありませんが、現在は何もしていません。

setSupportProgressBarIndeterminateVisibility()のクラッシュは、将来のリリースで修正され、何も動作しなくなります。

第4:

私の解決策:

progressBarウィジェットでツールバーを使用します。

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_spinner);
        progressBar.setVisibility(View.VISIBLE);
    }

レイアウト:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <include layout="@layout/toolbar"/>

    <FrameLayout
        Android:id="@+id/container"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"/>

</LinearLayout>

そして

ツールバー.xml

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <ProgressBar
        Android:id="@+id/progress_spinner"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="end"
        Android:indeterminate="true"
        Android:visibility="gone" />

</Android.support.v7.widget.Toolbar>
40
mmlooloo