0

我有一个非 Activity 类(我们称之为“NonActivity”),它需要发布消息并获得用户反馈。我有一个消息活动 (MsgActivity) 类来执行此操作。但是只有 Activity 类可以调用startActivityForResult()所以我在 NoActivity 中做了一个内部帮助类:

  // just to provide an Activity to launch MsgActivity
  class ActivityMsgClass extends Activity  {

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

            Intent iMA = new Intent(this, MsgActivity.class);
            iMA.putExtra("MsgText", mParams[0]);
       ...blah blah ...
            iMA.putExtra("ButtonCode", iBtns);
            startActivityForResult(iMA,3);          
        }     
  }

因此,我的 Activity 类在 Manifest 中声明:

<activity android:name="ActivityMsgClass"
          android:configChanges="orientation"
          android:screenOrientation="portrait"
          android:launchMode="singleInstance"></activity>

但是当我尝试调用它时。. .

                Intent i = new Intent(ctx, ActivityMsgClass.class);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                ctx.startActivity(i);

...我得到一个 ActivityNotFound 异常。我也试过没有 FLAG_ACTIVITY_NEW_TASK,我也试过在清单中限定名称,例如,

<activity android:name=".NoActivity.ActivityMsgClass"

. . . 无济于事。我究竟做错了什么?

提前致谢。

4

3 回答 3

1

技术方案是在清单中指定完全限定的活动路径。

实际的解决方案是避免这样做。让活动成为公共类,而不是内部类,这不是一个好习惯。

于 2012-04-11T17:32:43.860 回答
0

在您的清单文件中进行如下更改并尝试...

<activity android:name=".ActivityMsgClass"
          android:configChanges="orientation"
          android:screenOrientation="portrait"
          android:launchMode="singleInstance"></activity>
<activity android:name=".MsgActivity"
              android:configChanges="orientation"
              android:screenOrientation="portrait"
              android:launchMode="singleInstance"></activity>
于 2012-04-11T17:35:48.320 回答
0

您的活动名称声明应以句点开头。以这种方式声明它。

<activity android:name=".ActivityMsgClass"
      android:configChanges="orientation"
      android:screenOrientation="portrait"
      android:launchMode="singleInstance"></activity>

还要确保该活动MsgActivity也在清单中声明。

于 2012-04-11T17:37:54.920 回答