1

私はこのようなシリアライズ可能を持っています:

public class Main implements Serializable {

    private static final long serialVersionUID = 5053412967314724078L; 
    private ArrayList<Carte> main = new ArrayList<Carte>();


    public Main() {}
    public Main(Carte[] cartes) {
        for (Carte carte:cartes) {
            this.main.add(carte);
        }
    }
    public Carte[] getMain() {
        return (Carte[]) main.toArray();
    }

    public String toString() {
        String result = "";
        for (Carte carte : main) {
            result += carte.toString() + " ";
        }
        return result;
    }
}

インテントの追加としてシリアル化可能を送信します。

Carte[] cards = ...// Which is initialized elsewhere and been checked, there's no problem with that.
Main mainSerial = new Main(cards);
Intent broadcast = new Intent();
broadcast.setAction("coinchutc.RECUP");
broadcast.putExtra("cards", mainSerial);
Log.d("JoueurAgent", "Sending broadcast " + broadcast.getAction() + " " + mainSerial.toString());
context.sendBroadcast(broadcast);

ログでは、デバッグ メッセージを正しく出力できます。つまり、シリアル化可能なものを正常に構築できました。

次に、インテントを受信しようとしましたが、成功しませんでした:

私が行った宛先アクティビティの onCreate() で:

IntentFilter recupFilter = new IntentFilter();
recupFilter.addAction("coinchutc.RECUP");
registerReceiver(myReceiver, recupFilter);

ブロードキャストを受信する BroadcastReceiver クラスを作成しました。

private class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("RejoindrePartieActivity", "receive");
        String action = intent.getAction();
        Log.d("RejoindrePartieActivity", "Receive action " + action);
        if (action.equalsIgnoreCase("coinchutc.RECUP")) {
            Log.d("RejoindrePartieActivity", "RECUP");
            Bundle extras = intent.getExtras();
            if (extras != null) {
                Main main = (Main) extras.getSerializable("cards");
                //String recup = extras.getString("cards");
                Log.d("RejoindrePartieActivity", "Receive " + main.toString());
            }
        }
    }

しかし、それは何も受け取りません。最初のログでさえ印刷されません。

次に、シリアライズ可能を単純な文字列に変更しました。それはすべてうまくいきました!したがって、シリアル化可能な権利を取得したかどうか、なぜインテントフィルターがインテントを受け取ることさえできないのかを知りたいです。

前もって感謝します!

4

1 に答える 1