2017-07-05 21 views
0

ユーザーが検索クエリを実行するときにプログレスバーを追加していて、画面に表示されません。ここでは、スニペットは以下のとおりです。プログレスバーが画面に表示されずにデバッガに表示されます

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Button searchButton = (Button) findViewById(R.id.searchButton); 
     setContentView(R.layout.activity_main); //main layout, which has a child layout called resultsLayout 
     searchButton.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      EditText searchString = (EditText) findViewById(R.id.searchString); 
      search(searchString.getText().toString()); 
     } 
    }); 

    protected void search(String searchString){ 
     LinearLayout resultLayout = ((LinearLayout) findViewById(R.id.resultsLayout)); 
     resultLayout.addView(DisplayResults.getLoadBar(getApplicationContext())); 
     //do search 
     resultLayout.removeAllViews(); 
    } 

    public static ProgressBar getLoadBar(Context context){ 
     ProgressBar loadBar = new ProgressBar(context); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     loadBar.setLayoutParams(params); 
     loadBar.setVisibility(View.VISIBLE); 
     return loadBar; 
    } 

ない作品、私が作成するときに、それのいくつかは右setVisibilityのように、必要ではないかもしれませんけど、私はいくつかのことを試してみました、それ。おそらく、バーを表示する時間が足りませんでした(検索に約1.5秒かかります)。

私もアプリケーションをデバッグして、レイアウトの子としてProgressBarを表示しますが、画面に表示されます。

enter image description here

答えて

0
ProgressDialog progressDialog; //Create a prog dialog object 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Button searchButton = (Button) findViewById(R.id.searchButton); 
    progressDialog=new ProgressDialog(this); //init it 
    searchButton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v){ 
     progressDialog.show(); //show it when needed 
     EditText searchString = (EditText) findViewById(R.id.searchString); 
     search(searchString.getText().toString()); 
    } 
}); 

protected void search(String searchString){ 
    progressDialog.dismiss();//dismiss it when the search is complete 
    LinearLayout resultLayout = ((LinearLayout) findViewById(R.id.resultsLayout)); 
    resultLayout.addView(DisplayResults.getLoadBar(getApplicationContext())); 
    //do search 
    resultLayout.removeAllViews(); 
} 

あなたはこのProgressDialogオブジェクトの実装を試みることができます。

https://developer.android.com/reference/android/app/ProgressDialog.html
+0

機能は廃止され、私はもともと望んでいたことはまだできませんでした。 – Michel

+0

どの機能が廃止予定ですか?あなたはそれの写真を投稿できますか? –

+0

[ProgressDialogは廃止されました](https://ibb.co/fuHiza) – Michel

0

search()

方法
+0

それではないはずです。私はonCreateからいくつかのものを取り出しました、それを明確にするために追加します。 – Michel

+0

あなたができる場合は、それらをすべて実用的に追加してください –

0

の終わりにsetContentView(resultLayout);を追加私は明らかにそれが機能が終了した場合にのみそう、Androidは、コード内のすべての命令のために画面を更新しないことに気づきました。つまり、検索が開始されてから終了するまでの間に表示されるように、別のスレッドで検索する必要がありました。

関連する問題