-1
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_layout);
        checkForInternetConnection();
        exitWithOutInternet();
        gettingInfo();
        for (int i = 0; i < 999999999; i++){}
        findViewById(R.id.loading_login).setVisibility(View.GONE);
        findViewById(R.id.login_btms).setVisibility(View.VISIBLE);
    }

こんにちは、私の問題は、main_activity の開始後にいくつかの手順があり、今回は画面にプログレスバーを表示したいということです。その後、可視性をGONEに設定し、セットメニューVISIBLEを設定しますが、手順中は黒い画面しかありません。コードに setVisibility オーダーがない場合、同じ問題があります。

ご協力ありがとうございました

4

4 に答える 4

1

あなたの「手順」が何であるかはわかりませんが、AsyncTask. また、for loopそこは少し疑わしく、おそらく不必要に見えます。

「重労働」を行うためにAsyncTaskを実装します。でを設定しProgressBaronPreExecute()で更新onProgressUpdate()(必要な場合)、 でキャンセルできonPostExecute()ます。を除くこれらの方法のいずれかを使用してdoInBackground()、 を更新することもできますUI

さらに助けが必要な場合は、メソッドが何をするのか、そしてなぜfor loop何もしないように見える巨大なものがあるのか​​ を説明してください.

于 2013-08-13T19:28:43.887 に答える
0

Android スタイルの Thread または AsyncTask を使用します。完璧ではありませんが、「新しいスレッド」によってパニックになりかねない多くの問題を解決でき、理解しやすくなりました。

protected void onCreate(Bundle _savedInstanceState) {
    super.onCreate(_savedInstanceState);
    etContentView(R.layout.login_layout); 
    new LongTimeJob(this).execute();
}

static class LongTimeJob extends AsyncTask<Void,Void,Void> {
    private WeakReference<Activity> mActivity;
    public LongTimeJob(Activity _activity) {
        mActivity = new WeakReference<Activity>(_activity);
    }

    protected Void doInBackground(Void... _params) {
        checkForInternetConnection();
        exitWithOutInternet();
        gettingInfo();
        for (int i = 0; i < 999999999; i++){}
    }

    protected Void onPostExecute(Void _result) {
        if(mActivity.get()!=null) {
            mActivity.get()
                .findViewById(R.id.loading_login)
                    .setVisibility(View.GONE);
            mActivity.get()
                .findViewById(R.id.login_btms)
                    .setVisibility(View.VISIBLE);
        }
    } }
于 2013-08-13T20:13:03.593 に答える