9

おそらく私はこれを間違った方法で行っていますが、自分のアプリ内で Android AppWidget のクリック イベントに応答し、アクティビティを起動したいと考えています。設定した時点で、クリックすると起動したいPendingIntent別のものがあります。IntentonStartCommandはこの行を使用します:

final Intent mLaunchIntent = (Intent) intent.getParcelableExtra(Widget.EXTRA_INTENT);

電話するsetOnClickPendingIntentと、前に次の行があります。

mSendingIntent.putExtra(Widget.EXTRA_INTENT, (Parcelable) mLaunchIntent);

したがって、両方の行でmLaunchIntent有効Intentであっても、最初の行には大量のデータがありません。が無効であるため、呼び出しstartActivityは失敗しIntentます。

厳密に呼び出すことなくIntent別の内部を送信することが可能かどうか、またその方法は単純であるという理由で疑問に思っています。この 2 つを分けて、簡単にアクセスできるようにしたいと思います。IntentputExtrasIntent

4

4 に答える 4

12

私は実際にそれを理解しました、解決策は非常に簡単でした。mLaunchIntentにキャストしないでください。そうしないとParcelable、データが失われます。

mSendingIntent.putExtra(Intent.EXTRA_INTENT, mLaunchIntent);

Intentを介して別の を送信するために必要だったのはこれだけでしたIntent

于 2012-11-14T17:55:14.050 に答える
1

servicea を使用して Intent を解析できませんか?

于 2012-11-14T15:39:37.947 に答える
1

インテント/オブジェクトをソースから宛先に、またはその逆に渡す方法はいくつかあります。バンドルやエクストラを使用せずにそれを行う 1 つの方法は、変数 (getter と setter) を使用する通常のクラス メソッドに頼ることです。メソッドを使用してオブジェクトを渡します。それを行う別の方法は、クラス変数を使用することです。元:

public class ClassB  extends Activity{
    public static Object myObject;
    ...
}

public class ClassA extends Activity{
    ...
    @override
    protected void onCreate(Bundle savedInstanceState){
        Object myObject = ClassB.myObject;
    }
}
于 2012-11-14T16:17:02.083 に答える