0

alertDialog で "OK" を押したときにアプリケーションを再起動したいです。しかし、ボタンを押すと「Complete Action USing」画面が表示されます。「Complete Action..」に移動せずにアプリケーションを起動するにはどうすればよいですか?

そして、アプリケーションを再起動する正しい方法ですか?

PSアプリケーションを再起動する必要があります。最初にアプリケーションを起動すると、ローカルデータベースからリストが表示され、サーバーから新しいデータを取得してローカルデータベースを更新した後、更新されたリストを表示できないためです。アプリを再起動すると動作します。

startActivity を呼び出すコード:

Toast.makeText(mContext, "Reading complete", Toast.LENGTH_SHORT).show();

        AlertDialog.Builder clickAlert = new AlertDialog.Builder(mContext);
        clickAlert.setMessage("Database has been updated, please restart application to load new data. ");
        clickAlert.setPositiveButton("Restart", new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Intent i = new Intent("android.intent.action.MAIN");
                mContext.startActivity(i);

            }
        });
        clickAlert.create().show();

私は、文字列アダプターから入力される listFragment を持っています。この文字列は、サーバーからデータを返すメソッドから入力されます。このリストを再作成する必要があります。コード:

// Get a cursor containing storelist

        Cursor curStoreList = mDbHelper.getStoreList();
        String[] StoreList = new String[curStoreList.getCount()];
        int i = 0;

        // Store returned items in StoreList[]
        while (curStoreList.moveToNext()) {
            String storeName = curStoreList.getString(0);
            StoreList[i] = storeName;
            i++;
        }

        // Create an adapter with list of stores and populate the list with
        // values
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, StoreList);
        setListAdapter(adapter);
4

3 に答える 3

1
     Intent i = new Intent("android.intent.action.MAIN");
            mContext.startActivity(i);

意図を変える

         Intent mainIntent = new Intent(your currentactivity.this, theclassyouwanttogo.class); 

明示的な意図を使用する代わりにクラスを設定するこのようなもの

于 2012-08-23T06:36:56.637 に答える
0

アプリケーションを再起動する手間がかかるのはなぜですか。notifyDataChanged を使用すると、リストを更新できます(リストビューについて話している場合)。

于 2012-08-23T06:36:07.270 に答える
0

怠惰な忍者よりも正しいです。次のことを試してください。

//1. Add a new Runnable
private Runnable updateAdapter = new Runnable() {
  public void run() {
      adapter.notifyDataSetChanged();         
}
}; 
//2. Change your onClick to this:

@Override             
public void onClick(DialogInterface dialog, int which) {      
   runOnUiThread(updateAdapter);             
}
//3. Dont forget to set the adapter into your listcomponent:

setAdapter(adapter); 
setNotifyOnChange(true);
于 2012-08-23T06:36:14.533 に答える