2

可能重复:
重新启动应用程序到某个活动?

我目前正在编写一个 DialogPreferences Activity 来删除用户帐户。我成功地完全删除了用户数据,现在计划返回 LAUNCHER 屏幕以推动用户进行新安装。但我真的找不到任何回去的方法。

据我所知,意图只能从 XML 文件中使用。

有什么方法可以使用 StartActivity() 或在 DialogPreferences Activity 中重新启动应用程序?

    public class DeleteAccountActivity extends DialogPreference {

       public DeleteAccountActivity(Context context, AttributeSet attrs) {
          super(context, attrs);
       }

       @Override
       protected void onDialogClosed(boolean positiveResult) {
          super.onDialogClosed(positiveResult);
          if (positiveResult) {
             if (DEBUG)
                Log.d(0, DEBUG_TAG, "DeleteAccountActivity");

         try {
            ...

            boolean success = rest.deregister(request);
            if (success) {
               Toast.makeText(getContext(),
                              getContext().getResources().getText(R.string.successfully_deleted_account),
                              Toast.LENGTH_LONG).show();

               SharedPreferences.Editor editor = mSharedPref.edit();
               editor.clear();
               editor.commit();

               Intent intent = new Intent();
               intent.setClass(this, A.class);
               StartActivity(intent); //error
               if (DEBUG)
                  Log.d(0, DEBUG_TAG, "Deleted the user account successfully.");
            }
         }
         catch (Exception e) {
            Log.e(0, DEBUG_TAG, "asd", e);
         }
      }
   }
}
4

1 回答 1

1

(通过您的代码示例,我立即看到了一个解决方案,感谢您发布它!)由于startActivity()是 Context 类的成员,所以只需使用:

getContext().startActivity(...);

当然,与其调用getContext()三次或更多次,不如将它的引用保存在本地或类变量中。

于 2012-10-12T18:48:33.953 回答