使用调用startActivity()重新启动应用程序,但获取“使用完整操作”

时间:2012-08-23 06:30:50

标签: android android-activity android-alertdialog

我想在alertDialog中按“OK”时重新启动我的应用程序。但是,当我按下按钮时,我正在“完成操作使用”屏幕,如何启动我的应用程序而不必转到“完成操作...”?

这是重启应用程序的正确方法吗?

P.S。我需要重新启动应用程序,因为最初当应用程序启动时,列表从本地数据库显示,然后从服务器获取新数据并更新本地数据库后,我无法显示更新列表。它重新启动应用程序后工作。

调用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();

我有一个从String适配器填充的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);

3 个答案:

答案 0 :(得分:1)

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

将意图改为

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

类似这样设置类而不是使用显式意图

答案 1 :(得分:0)

为什么要经历重启应用程序的所有麻烦。如果你使用notifyDataChanged,你可以更新你的列表(如果你在谈论listview)。

答案 2 :(得分: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);