使用创建Main activity

问题描述:

我先用以下方式声明了mian activity:

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:windowSoftInputMode="stateHidden"
          android:screenOrientation="portrait">
    <intent-filter>
          <action android:name="android.intent.action.MAIN"/>
          <action android:name="com.package.name.MyActivity"/>
          <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

然后使用如下代码时就得到一个错误提示:No Activity found to handle Intent { act=com.package.name.MyActivity flg=0x24000000 }

Intent intent = new Intent("com.package.name.MyActivity");
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);

如果不使用,如何使用来开始这个动作呢?
我又改为以下代码,还是不正确。

<intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <action android:name="com.package.name.VIEW"/>
      <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>


Intent intent = new Intent("com.package.name.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);

先指定两个intent filters:

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:windowSoftInputMode="stateHidden"
          android:screenOrientation="portrait">
    <intent-filter>
          <action android:name="android.intent.action.MAIN"/>
          <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
          <action android:name="com.package.name.MyAction"/>
          <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

然后使用action名称开启activity:

Intent intent = new Intent("com.package.name.MyAction");
context.startActivity(intent);

或者使用class名称:

Intent intent = new Intent(context, MyActivity.class);
context.startActivity(intent);

在action标签中的属性名称要与action的名称相同,而不应该是activity的名称。所以删掉那一行:

 <action android:name="com.package.name.MyActivity"/>

你的class名称不是com.package.name.MyActivity,应该是com.package.name.general.MyActivity。一个简单的解决方法是用一个类创建一个新的intent,不是用一个报名创建。你可以使用自动完成填写正确的类。