5

こんにちは私はテキストボックスと検索ボタンを備えたアプリを開発しました。テキストボックスに数値を入力して検索ボタンをクリックすると、入力した値を次のアクティビティに渡し、その値を使用して値を取得する必要があります。データベースから。

次のコードを使用して値を渡します。

search_button.setClickable(true);
      search_button.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        String outlet_no = outlet_id.getText().toString();
        System.out.println(outlet_no);
        if(!outlet_no.isEmpty()){
        @SuppressWarnings("deprecation")
        SharedPreferences myPrefs = getApplicationContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
        SharedPreferences.Editor prefsEditor = myPrefs.edit();

        prefsEditor.putString("outlet_id", outlet_no);
        prefsEditor.commit();

        Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);       
        startActivity(myIntent);
        HomeActivity.this.startActivity(myIntent);
        }
        else{
          Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT);
        }  
      }
    });

私の問題は、値を渡さないことです。誰かがこれを手伝ってくれますか?また、私がそれを書いていなかったので、私はそれを理解するのが難しいと感じているので、any1は私に上記のコードを説明できますか?

StoreActivity側

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.store);      
        myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);             
        mOutletID = myPrefs.getString("outlet_id", "0");
        mOutletDetails = myPrefs.getString("outlet_details","{}");
        Log.v("outlet_details",myPrefs.getString("outlet_details","{}"));
        if(mOutletDetails != "{}"){
            setOutletData(mOutletDetails);
        }
        else{
            executeAjaxRequest();
        }
    }    
4

8 に答える 8

9

あなたが犯した間違い:

1)なぜ2回活動を始めようとしているのですか?

startActivity(myIntent);   // this is OK
HomeActivity.this.startActivity(myIntent);

2)入力したテキストをあるアクティビティから別のアクティビティに渡すには、次のようputExtra()なIntentのメソッドを使用できます。

myIntent.putExtra("SearchText", outlet_no);

したがって、完全なコードは次のようになります。

 Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);   
 myIntent.putExtra("SearchText", outlet_no);    
 startActivity(myIntent);

3)最初のアクティビティから渡した値を受け取るには:

Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String outlet_no= bundle.getString("SearchText");

4)SharedPreferences:

参考SharedPreferenceまでに、アプリケーション全体で後で参照および使用できる少量のデータを保存するために使用されます。

以下のリンクを参照してください。

  1. SharedPreferences
  2. 意図
  3. インテントおよびインテントフィルター
于 2013-02-21T07:20:13.970 に答える
3
Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);
myIntent.putExtra("searchString", outlet_no);       
startActivity(myIntent);

これにより、がに送信searchStringされますStoreActivity

そして、StoreActivity以下を使用して値を取得できます。

String s = getIntent.getStringExtra("searchString");
于 2013-02-21T07:21:38.630 に答える
2

onClickメソッドで、次のコードを使用します。

    String outlet_no = outlet_id.getText().toString();
    if(!outlet_no.isEmpty()){
        Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);  
        myIntent.putExtra("outlet_id",outlet_no);
        startActivity(myIntent);
    }
    else{
        Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT);
    }  

StoreActivityのonCreate()メソッドには、次のようなものがあります。

String outlet_no = getIntent().getStringExtra("outlet_id");  
if (outlet_no != null) //Just a defensive check
   //Start your processing
于 2013-02-21T07:30:01.820 に答える
1

インテントを使用してこれを行うこともできます。

たとえば、SourceActivityとDestinationActivityの2つのアクティビティがあり、SourceActivityの値をDestinationActivityに渡します。

ボタンのOnClickListener:

String str_outlet_no = outlet_no.getText().toString();
Intent intent = new Intent(SourceActivity.this, DestinationActivity.class);
intent.putExtra("outlet_no_key", outlet_no);
startActivity(intent);

DestinationActivityの反対側:

Intent intent = getIntent();
String desi = intent.getStringExtra("outlet_no");

データベースからdesiを検索します

于 2014-02-09T16:15:54.227 に答える
0

あなたはこのようなことを試すことができます:-

アクティビティA

myIntent.putExtra(var, value); // Putting the value
startActivity(myIntent);

アクティビティB

String value = getIntent().getStringExtra(var); // Getting the value
于 2013-02-21T07:22:48.803 に答える
0

これを行う最も簡単な方法は、アクティビティの開始に使用しているインテントで、セッションIDをサインアウトアクティビティに渡すことです。

Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent)

インテントのドキュメントには、より多くの情報があります(「エクストラ」というタイトルのセクションを参照してください)。

于 2013-02-21T07:24:32.077 に答える
-1

あなたは単にそれを次のように書くことができます

Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);
      myIntent.putExtra("outlet_no",outlet_no);
        startActivity(myIntent);  

これがうまくいったかどうか教えてください。

于 2013-02-21T07:23:17.257 に答える
-1

アクティビティA

myIntent.putExtra(var, value); // Putting the value
startActivity(myIntent);

アクティビティB

String value = getIntent().getStringExtra(var); // Getting the value
于 2013-02-21T07:49:51.333 に答える