2

あるアクティビティから別のアクティビティに情報を渡そうとしていますが、その間、進行状況ダイアログを表示したいと思います。主に2番目のアクティビティが情報を処理しているとき。私は読んでいますが、それを行う適切な方法は非同期タスクのようです。それとも別の方法がありますか?

これが私のコードです:アクティビティ1

    public class SearchActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    final EditText edittext = (EditText) findViewById(R.id.edittext);
    edittext.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // If the event is a key-down event on the "enter" button
            if ((event.getAction() == KeyEvent.ACTION_DOWN)
                    && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                // Perform action on key press
                String query = edittext.getText().toString();
                // gets the text and makes sure its a string
                Intent intent = new Intent(SearchActivity.this,
                        DissertationActivity.class);
                intent.putExtra("query1", query);
                startActivity(intent);

                return true;
            }
            return false;
        }
    });

    final Button button = (Button) findViewById(R.id.searchButton);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String query = edittext.getText().toString();
            // gets the text and makes sure its a string

            Intent intent = new Intent(SearchActivity.this,
                    DissertationActivity.class);
            intent.putExtra("query1", query);
            startActivity(intent);

        }
    });

}
   }

これは2番目のアクティビティです。

      public class DissertationActivity extends ListActivity {
/** Called when the activity is first created. */

public ArrayList<String> book_Array = new ArrayList<String>();
ArrayAdapter<String> adapter;

String href = "";
String href1 = "";
String search_Word = "";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    Bundle extras = getIntent().getExtras();
    search_Word = extras.getString("query1");

    adapter = new ArrayAdapter<String>(this, R.layout.list_item_1,
            book_Array);
    setListAdapter(adapter);

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    try {
        Document doc = null;
        Document guestLink = null;

        guestLink = Jsoup.connect("https://aulib.abdn.ac.uk:443/F").get();
        Element link = guestLink.select("p > a").first();
        href1 = link.attr("href");
        href = href1.substring(0, href1.length() - 2); // removes -0 from
                                                        // the

        // href_Array.add(href); //adds href to the array because string
        // wont add to the public var.
        doc = Jsoup.connect(
                href + "&request=" + search_Word
                        + "&find_code=WRD&adjacent=N&x=0&y=0").get();
        // System.out.println(doc);
        Elements headings = doc.select("td:eq(3)");
        // System.out.println(headings);
        for (Element heading : headings) {
            // System.out.println(heading.text());
            String j = heading.text();

            book_Array.add(j);

        }

    } catch (IOException e) {
        e.printStackTrace();

    }

    book_Array.remove(0);
    adapter.notifyDataSetChanged();
    book_Array.remove(1);
    adapter.notifyDataSetChanged();
    book_Array.remove(2);
    adapter.notifyDataSetChanged();
    book_Array.remove("Search");
    adapter.notifyDataSetChanged();
    book_Array.remove(" | ");
    adapter.notifyDataSetChanged();
    book_Array.remove(0);
    adapter.notifyDataSetChanged();

    lv.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position,
                long id) {
            // Context context = getApplicationContext();
            int query = position;
            // String text = book_Array.get(position);
            // int duration = Toast.LENGTH_SHORT;
            // Toast toast = Toast.makeText(context,
            // String.valueOf(position), //shows the postion in the array
            // list
            // duration);
            // toast.show();

            Intent intent = new Intent(DissertationActivity.this,
                    FullDetailsActivity.class);
            intent.putExtra("href", href);
            intent.putExtra("query1", (int) query);
            intent.putExtra("search_Word", search_Word);

            startActivity(intent);
        }
    });

}

 }

私は使ってみました:

       this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...",
            true, false);

しかし、それはうまくいきませんでした。

アクティビティの間に進行状況ダイアログが表示されるようにするにはどうすればよいですか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

ProgressDialog.showを呼び出すと、UIスレッドがブロックされます。したがって、進行状況ダイアログ/バーは、メソッドが戻るまで表示されません。したがって、メソッド内で実行するスレッドを作成できます。これにより、メインUIスレッドのブロックが回避されます。サンプルコード-

ProgressDialog spinnerDialog = ProgressDialog.show(  
Placeholder.this, "","Your text ", true);
new Thread(new Runnable() {
public void run() {
    //your method code
    return;
}
}).start();
于 2012-04-23T14:23:09.790 に答える