0

ボタンを押すと進捗ダイアログが表示され、AsyncTaskを含むメソッドを実行するフラグメントがありますが、ボタンを押すとProgessダイアログは表示されません。非同期タスクが実行されます。これは、フラグメント進捗ダイアログが表示されません

public class ParcheggiaFragment extends Fragment { 

private Button button; 
ProgressDialog progressDialog1; 
SharedPreferences prefs; 
HttpGetNoleggio httpGetNoleggio; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    final View layout = inflater.inflate(R.layout.fragment_parcheggia, container, false); 

    button = (Button) layout.findViewById(R.id.button); 
    prefs = this.getActivity().getSharedPreferences(Keys.SHARED_PREFERENCES, Context.MODE_PRIVATE); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 


      progressDialog1.show(); 

      int a = checkNoleggioCompletato(); 

      FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.frame_principale, new ResultFragment()); 
      fragmentTransaction.commit(); 

     } 
    }); 

    return layout; 
} 

private int checkNoleggioCompletato() { 

    final int id = prefs.getInt(Keys.ID_UTENTE, -1); 

    Integer[] noleggio; 
    int idNoleggio = -1; 
    try { 
     String str = "here i put the url that i have to use" + id; 
     URL url = new URL(str); 

     noleggio = httpGetNoleggio.execute(url).get(); 
     idNoleggio = noleggio[0]; 
     int idBici = noleggio[1]; 
     int noleggioResult = idNoleggio; 
    } catch (MalformedURLException | ExecutionException | InterruptedException e) { 
     e.printStackTrace(); 
    } 
    return idNoleggio; 
} 

@Override 
public void onStart() { 

    progressDialog1 = new ProgressDialog(this.getActivity()); 
    progressDialog1.setIndeterminate(true); 

    super.onStart(); 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    httpGetNoleggio = new HttpGetNoleggio(this.getActivity()); 

} 

@Override 
public void onResume() { 
    super.onResume(); 
} 

}

コードが正しいようで、ProgressDialogが表示されない理由を私は理解できないのコードです。 HttpNoleggioは、AsyncTaskを拡張してdoInBackgroundメソッドを実装する別のクラスです

+1

ここでダイアログを削除します。タスクがすばやく完了してダイアログに表示される時間が得られない可能性もあります。 – Shaishav

+0

@ Shaishavタスクを完了するのに7秒かかります。 ProgressDialogはこのフラグメントには現れませんが、次のフラグメント 'ResultFragment'に表示されます –

+0

私は理解していません。* Progess Dialogはスクリーンに表示されません。ボタンのクリックだけで 'ResultFragment'を開始していませんか? – Shaishav

答えて

0

コードごとに、ParcheggiaFragmentにプログレスバーを表示してからこのフラグメントをResultFragmentに置き換えます。 ResultFragmentがParcheggiaFragmentを置き換え、進行状況バーが表示されないようにしました。次のコードをコメントしてください:

FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.frame_principale, new ResultFragment()); 
fragmentTransaction.commit(); 

次に、プログレスバーが表示されます。

+0

しかし、彼はアクティビティのコンテキストで進行ダイアログを初期化しています。 'フラグメント 'が表示されていても表示され(正当に動作します) – Shaishav

+0

フラグメントが変更されたときにProgressDialogが表示されます。この場合、ResultFragmentが画面に表示されたときに表示されます –

+0

コード進行状況に応じて、新しいトランザクションのためにこの新しいResultFragmentが表示されます。 – Rajendra

関連する問題