8

これは意図的にデータを送信するための私のコードですが、別のアクティビティを開きたくありません。データを開かずに送信したいだけです..

Bundle contain = new Bundle();
            contain.putString("key4", item);
            contain.putString("price", price);

Intent a  = new Intent(Searchbydate.this, Searchbyitem.class);
            a.putExtras(contain);
            startActivity(a); 

ここでは、この Searchbyitem.class を開きたくないので、データを送信するだけです...

4

4 に答える 4

5

はい、私もこの問題に直面しました。

多くの開発者は、Intent または Bundle を介してダイアログから別のアクティビティにデータを渡すときにも問題に直面しています。別のアクティビティからの取得時に null を返します。

唯一の解決策は SharedPreferences です。

ただし、閉じるボタンの中に配置する必要があります。(例: OK/キャンセルなど)

また、同じキーを使用して別のアクティビティからデータを簡単に取得できます。ブロードキャスト インテントが後に続くサービスは使用しないでください。

ダイアログ アクティビティのコードは次のようになります。

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setIcon(R.drawable.mailicon);
    builder.setTitle(name);
    builder.setView(view);

    builder.setPositiveButton("Send Request",new DialogInterface.OnClickListener()
    {

     @Override 
     public void onClick(DialogInterface dialog,    int which) {
     String mailID = id.getText().toString();

     //Here define all your sharedpreferences code with key and value
     SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE);
     SharedPreferences.Editor edit = prefs.edit();
     edit.putString("MID", mailID );
     edit.commit();

    }

});

そして、別のフェッチから次のようなデータを取得します。

    SharedPreferences bb = getSharedPreferences("my_prefs", 0);
    String m = bb.getString("NUM", "");
    Toast.makeText(this, m, Toast.LENGTH_SHORT).show();

適切な基準のためにいくつかのチェックを追加します。

ありがとうございました

于 2013-08-02T09:43:02.503 に答える
3

それをアーカイブするためにも使用SharedPreferencesします

于 2013-03-17T21:57:02.873 に答える
1

おそらく、Servicenot an アクティビティを使用する必要があります。

読む: http://developer.android.com/guide/components/fundamentals.html#Components

于 2013-03-17T21:56:07.943 に答える
1

EventBusまたはOtto Android ライブラリを試して、アクティビティ、サービス、およびフラグメント間で通信できます。

したがって、データを渡すサービスを作成し、アクティビティ間の通信、フラグメントなどにイベントバスを使用する必要があります

于 2013-03-17T21:57:18.223 に答える