隐式Intent启动Activity,action不能使用@string配置

来源:互联网 发布:淘宝网户外服装男 编辑:程序博客网 时间:2024/06/03 08:00

Activity配置:

<activity            android:name=".activity.NoteInfoActivity"            android:label="@string/title_activity_note_info"             android:theme="@android:style/Theme.Light.NoTitleBar"             >            <intent-filter >                <action android:name="@string/NoteInfo"/>                <category android:name="android.intent.category.DEFAULT"/>            </intent-filter>        </activity>

则,当使用Java代码隐式启动该Activity:

      Intent intent = new Intent();        intent.setAction(getString(R.string.NoteInfo));        intent.putExtra(Contast.OBJ_NOTEPATE, notepad);        startActivity(intent);

抛出异常:

AndroidRuntime(18397): Android.content.ActivityNotFoundException: No Activity found to handle Intent {{act=@string/cn.com.lu.yuejiben.NoteInfo (has extras) }

异常显示:系统没有找到接收action为@string/cn.com.lu.yuejiben.NoteInfo的Activity,原因是配置Activity的action时,使用了@string的写法。然后不知为何,android就抽风了,可能是解析xml和String文件产生问题,导致Action对不上,于是,无法启动Activity。

而即使java代码写出如下形式:

Intent intent = new Intent();        intent.setAction("@string/NoteInfo");        intent.putExtra(Contast.OBJ_NOTEPATE, notepad);        startActivity(intent);

或如下形式也不会成功:

Intent intent = new Intent();        intent.setAction("@string/cn.com.lu.yuejiben.action.NoteInfo");        intent.putExtra(Contast.OBJ_NOTEPATE, notepad);        startActivity(intent);

于是,我只能呵呵。。。果然抽风了。。。。

0 0
原创粉丝点击