1

我正在重新发布这个问题:

我希望我的应用程序在警报对话框中按“确定”时重新启动。但是当我按下按钮时,我得到“使用完成操作”屏幕,我如何启动我的应用程序而不必去“完成操作..”?

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

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

调用startActivity的代码:

Toast.makeText(mContext, "阅读完毕", 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,这个字符串是从从服务器返回数据的方法填充的。我需要重新填充此列表。代码:

// 获取包含 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

2 回答 2

2

实际上,

android.intent.action.MAIN

是意图操作名称而不是任何活动名称。

您必须使用要启动的活动名称而不是它..

喜欢,

Intent intent = new Intent(<Current_Activity>.this, <Starting_Activity>.class);

更新:

您想要实现的android.intent.action.MAIN是 Android 中所有应用程序的通用操作名称。

如果要使用 Intent Action Name 启动 Activity,则必须在应用程序的 Manifest 文件中的 Activity Tag 中定义自己的 Intent Action 名称。

看看这个 SO Question如何在 <intent-filter> 的帮助下开始 MAIN 活动?

于 2012-08-23T07:06:39.853 回答
0

改变这个意图

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

有点像

         Intent mainIntent = new Intent(crntactivity.this, classuwanttogo.class);
于 2012-08-23T07:03:04.053 回答