3

私は今、儀式を介してそれらを送信する最良の方法ではないことを知っている方法がありますが、それらを文字列として送信し、受信者側でそれらを Int に変換しています。問題は、変換を行うと電話でクラッシュすることです. これは私の送信者側にあるものです:

    public void sendMessage(View view) {
    // Do something in response to button
    Intent intent = new Intent(this, PayTracker.class);
    // hourly wage send
    EditText editText = (EditText) findViewById(R.id.hourly_wage);
    String message1 = editText.getText().toString();
    intent.putExtra(MESSAGE_1, message1);
    // ot wage send
    EditText editText1 = (EditText) findViewById(R.id.ot_wage);
    String message2 = editText1.getText().toString();
    intent.putExtra(MESSAGE_2, message2);
    // hours per day send
    EditText editText2 = (EditText) findViewById(R.id.hours_day);
    String message3 = editText2.getText().toString();
    intent.putExtra(MESSAGE_3, message3);
    // start new activity
    startActivity(intent);

そして、これは私の受信側にあるものです:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pay_tracker);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    // Receive messages from options page
    Intent intent = getIntent();
    String message1 = intent.getStringExtra(Options.MESSAGE_1);
    String message2 = intent.getStringExtra(Options.MESSAGE_2);
    String message3 = intent.getStringExtra(Options.MESSAGE_3);
    // convert string to integer
    int HW = Integer.valueOf(message1);
    int OTW = Integer.valueOf(message2);
    int HPD = Integer.valueOf(message3);

私はすべてをテストし、アプリがクラッシュする原因となっている変換をテストしました。誰かがクラッシュしないようにするか、文字列を送信して変換するのではなく、2番目のアクティビティにintを送信するまったく新しい方法を提供してくれることを望んでいました。ありがとうございました!

================================================== =====================

これが私の新しいコードです。皆さんの助けを借りて!

送信:

    public void sendMessage(View view) {
    // Do something in response to button
    Intent intent = new Intent(this, PayTracker.class);
    // Gather text from text boxes
    EditText editText = (EditText) findViewById(R.id.hourly_wage);
    EditText editText1 = (EditText) findViewById(R.id.ot_wage);
    EditText editText2 = (EditText) findViewById(R.id.hours_day);
    //Create String from text
    String message1 = editText.getText().toString();
    String message2 = editText1.getText().toString();
    String message3 = editText2.getText().toString();
    //Convert String to Int
    int HW = 0, OTW = 0, HPD = 0;
    try{
        HW = Integer.valueOf(message1);
        OTW = Integer.valueOf(message2);
        HPD = Integer.valueOf(message3);
    }
    catch(NumberFormatException nfe){
        //do something else here
        //for e.g. initializing default values to your int variables
    }
    // Send Integers to PayTracker.java
    intent.putExtra(MESSAGE_HW, HW);
    intent.putExtra(MESSAGE_OTW, OTW);
    intent.putExtra(MESSAGE_HPD, HPD);
    // start new activity
    startActivity(intent);
}

受信側:

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pay_tracker);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    // Receive messages from options page
    Intent intent = getIntent();
    int HW = intent.getIntExtra(Options.MESSAGE_HW, 0);
    int OTW = intent.getIntExtra(Options.MESSAGE_OTW, 0);
    int HPD = intent.getIntExtra(Options.MESSAGE_HPD, 0);
    // set textview
    TextView textView = (TextView) this.findViewById(R.id.yourpay);
    textView.setText(String.valueOf(HW));
}
4

5 に答える 5

4

受信側で変換されるようIntegersに渡す必要はありません。だけでなく保持することができます。StringsActivityIntentsIntegersStrings

通常どおりにデータを追加するだけです。

int foo = 5;
Intent intent = new Intent(this, bar.class);
intent.putExtra("foobar", foo);

そして、次のようintに受信でインテントからあなたを取得Activityします。

Intent intent = getIntent();
int foo = intent.getIntExtra("foobar", 0);

Intentsよりも多くのデータを保持できますStrings。実際、ドキュメンテーションを見てください。Intents が 、 、 、 などを保持できることLongsDoublesわかりFloatsますParcelables

于 2012-07-26T14:27:22.253 に答える
0

あるアクティビティから別のアクティビティにデータを渡す "文字列" 値。インテントの使用

アクティビティワン

Intent intent = new Intent(Activityone.this,Activitytwo.class)
intent.putExtra("TYPE", type);
startActivity(intent); 

アクティビティツー

Intent intent =getIntent();
Receivevalue =intent.getExtras().getString("TYPE");
(OR)
Receivevalue = getIntent().getExtras().getString("TYPE");

あるアクティビティから別のアクティビティにデータを渡す "Integer" value.using インテント

アクティビティワン

Intent intent = new Intent(Activityone.this,Activitytwo.class)
intent.putExtra("TYPE", type);
startActivity(intent); 

アクティビティツー

Intent intent = getIntent();
value = intent.getIntExtra("TYPE", 0);     
// Type = intent.getIntExtra(name, defaultValue);
于 2012-07-26T14:18:51.380 に答える
0

次のコードを使用して目標を達成できます

通話アクティビティで

         Intent value = new Intent(YourCallingActivity.this,DestinationActivity.class);
         value.putExtra("integerone", integeronevalue);
         value.putExtra("integertwo", integertwovalue);
         value.putExtra("integerthree", integertwovalue);
         startActivity(value);

宛先アクティビティで

        int integerone = getIntent().getExtras().getInt("integerone");
        int integertwo = getIntent().getExtras().getInt("integertwo");
        int integerthree = getIntent().getExtras().getInt("integerthree");

それが役に立てば幸い

于 2012-07-26T14:28:24.733 に答える
0

文字列は整数値に変換できない場合があるため、変換部分をtry/catchブロック内にカプセル化します。

int HW, OTW, HPD;

try{
    HW = Integer.valueOf(message1);
    OTW = Integer.valueOf(message2);
    HPD = Integer.valueOf(message3);
}
catch(NumberFormatException nfe){
    //do something else here
    //for e.g. initializing default values to your int variables
}

※より適切には、整数値を送信部分に渡し、そのまま受信します。

于 2012-07-26T14:22:01.537 に答える
0

送信側で次のようなことを試してください。

 String message1 = editText.getText().toString();   
 intent.putExtra("MESSAGE_1", message1);
 String message2 = editText1.getText().toString();
 intent.putExtra("MESSAGE_2", message2);
 String message3 = editText2.getText().toString();
 intent.putExtra("MESSAGE_3", message3);

受信側:

  if (getIntent() != null) {
    if (getIntent().getExtras() != null) {
        String mess1 = getIntent().getExtras().getString("MESSAGE_1"); 
        String mess2 = getIntent().getExtras().getString("MESSAGE_2"); 
        String mess3 = getIntent().getExtras().getString("MESSAGE_3"); 
      }
 }
于 2012-07-26T14:24:50.517 に答える