2017-09-20 6 views
0

私はフラグメントとokhttppクライアントを持っています。 フラグメント内でリクエストを行い、okhttpが200という応答IDを取得すると、フラグメント内にmProgressBar.setVisibility(View.GONE);が設定されます。 しかし、残念ながら何も起こりません。 私は応答を得て、そのok、コードはmProgressBar.setVisibility(View.GONE);行に行くが、何も起こらない、mProgressBarはまだ表示されますが、ログはmProgressBar not visibleと表示されます。 なぜですか?ここでフラグメントのビューを他のスレッドに変更する方法は?

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
    View rootView = inflater.inflate(R.layout.fragment_shemas, container, false); 
    ls = (Ls) getActivity().getApplicationContext(); 
    mProgressBar = rootView.findViewById(R.id.pb_fr_schema); 

    mClient = ls.createClient(getActivity()); 
    Log.d(TAG, "Назначили OkHttpClient " + mClient.toString() + " для " + this.getClass().toString() + " в " + this.getClass().toString()); 

    try 
    { 
     String url = ls.baseUrl + ls.getLsId() + "/" + ls.getCurrBidId() + "/call-fwd-settings/overview"; 
     requestOkHttp(url, "GET", ""); 
    } catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

    mSpinner = (Spinner) rootView.findViewById(R.id.sp_fr_schemas_did); 
    // Список номеров 
    ArrayList<String> didsNames = new ArrayList<>(); 
    for (Map.Entry<String, Bid> pr : ls.getProducts().entrySet()) 
    { 
     didsNames.add(pr.getValue().getBidName()); 
    } 

    mAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_row_products, R.id.tv_bid_name, didsNames); 
    // Чтобы был читаемый дизайн при выборе DID 
    mAdapter.setDropDownViewResource(R.layout.spinner_row_products); 
    //spinner.setAdapter(mAdapter); 
    return inflater.inflate(R.layout.fragment_shemas, container, false); 
} 

は、私は解決策を見つけたokhttp応答コード

getActivity().runOnUiThread(new Runnable(){ 
@Override 
public void run(){ 
// Отключаем mProgressBar 
mProgressBar.setVisibility(View.GONE); 
if (mProgressBar.getVisibility() == View.VISIBLE) { 
Log.d(TAG, " mProgressBar visible"); 
} else { 
Log.d(TAG, " mProgressBar not visible"); 
} 
} 
}); 

答えて

0

です。 問題がreturnにありました。 これをreturn inflater.inflate(R.layout.fragment_shemas, container, false);に変更します。これはreturn rootView;になりました。

関連する問題