0

別のアクティビティBを開始するためのアクティビティAがあります。アクティビティBには、インターネットからリソースをダウンロードする機能がいくつかあります。AがBにジャンプしたら、すぐにB'ビューを表示したいのですが、実際には、すべての機能が準備できるまでB'ビューは非表示になります。データを処理するときに「検索中....」をBに表示したい。

A:
    Intent intent = new Intent(A.this, B.class);
    intent.putExtra("result",obj.getText());
    A.this.startActivity(intent);


B:
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.success);
        TextView text = (TextView)this.findViewById(R.id.textview);
        text.setText("searching....");         
        Bundle bun= getIntent().getExtras();
        String tempIsbn=bun.getString("result");

        //some functions
        bookinfo=getResultByIsbn(tempIsbn);
                  .....
    }
4

3 に答える 3

0

bookinfo=getResultByIsbn(tempIsbn);別のスレッドに移動します。これを行うには、JavaスレッドまたはAsyncTaskを使用します。

于 2012-08-20T12:40:39.027 に答える
0

AsyncTask結果を非表示にして表示することができます

private class PerformTask extends AsyncTask<Void, Void, Void>{

    @Override
    protected void onPreExecute() {
        /**
                      * display view to show progress
                      **/
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params) {
        bookinfo=getResultByIsbn(tempIsbn);
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        /**
                      * hide progress
                      * display results
                      **/
        super.onPostExecute(result);
    }
}
于 2012-08-20T12:42:05.543 に答える
0

単純なスレッドは、アクティビティBのoncreate関数でトリックを実行できます。

new Thread(new Runnable() {

        @Override
        public void run() {

            bookinfo=getResultByIsbn(tempIsbn);

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    // Update UI

                }
            });

        }
    }).start();
于 2012-08-20T13:10:32.243 に答える