我有一个非活动类(我们称之为“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"
。 。 。无济于事。我做错了什么?
提前致谢。
答案 0 :(得分:1)
技术解决方案是在清单中指定完全限定的活动路径。
实际的解决方案是避免这样做。让活动成为公共课,而不是内部阶级,这不是一个好习惯。
答案 1 :(得分: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>
答案 2 :(得分:0)
您的活动名称声明应以句点开头。以这种方式宣布。
<activity android:name=".ActivityMsgClass"
android:configChanges="orientation"
android:screenOrientation="portrait"
android:launchMode="singleInstance"></activity>
还要确保活动MsgActivity
也在清单中声明。