0

メッセージを投稿してユーザーからのフィードバックを得る必要がある非Activityクラス(「NonActivity」と呼びましょう)があります。これを行うためのメッセージアクティビティ(MsgActivity)クラスがあります。ただし、 startActivityForResult()を呼び出すことができるのはActivityクラスのみであるため、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クラスは、マニフェストで次のように宣言されています。

<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 に答える