6

この方法で私の主な活動を宣言すると:

<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);

使用しない場合、 forIntent i = new Intent(this, MyActivity.class);の助けを借りてこれを行うにはどうすればよいですかaction<intent-filter>

役に立たなかった:

 <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);
4

3 に答える 3

8

2 つのインテント フィルタを指定してみてください。

<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>

次に、アクション名を使用してアクティビティを開始できます。

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

またはクラス名:

Intent intent = new Intent(context, MyActivity.class);
context.startActivity(intent);
于 2012-07-28T18:27:00.907 に答える
1

タグのname属性はaction、アクティビティの名前ではなく、アクションの名前です。行を削除し、

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

インテント フィルター タグはアクティビティのタグの下にあるため、システムはそれがそのアクティビティに適用されていることを既に認識しています。

于 2012-07-28T17:25:03.133 に答える
0

あなたのクラス名は ではありませcom.package.name.MyActivitycom.package.name.general.MyActivity

この間違いを避ける簡単な方法は、パッケージ名の代わりにクラスを使用して新しいインテントを作成することです。オートコンプリートを使用して、適切なクラスを入力できます。

クラスを指定してインテントを作成したくないと言います。なぜだろうと思います-それは良い方法だと思います。

于 2012-07-28T17:31:52.807 に答える