0

Intentメカニズムを使用して2つの数値を計算し、結果を2番目の画面に表示する簡単なAndroidプログラムを作成しました...しかし、問題は、2番目の画面に移動する計算をクリックするとアプリが強制的に閉じられることです..アクティビティを登録しましたマニフェスト ファイルで、アプリは文字列値を処理するときにうまく機能します。

最初の画面

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
int a;
int b;
int sum;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final EditText num1 = (EditText) findViewById(R.id.editText1);
    final EditText num2 = (EditText) findViewById(R.id.editText2);
    Button button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {

テキストフィールドで読み取った値を整数に解析する

    a = Integer.parseInt(num1.getText().toString());
    b = Integer.parseInt(num2.getText().toString());
    sum = a+b;

ここで、合計で明示的なインテントを開始しています

    Intent intent = new Intent(MainActivity.this, Second.class);
    intent.putExtra("just",sum);
    startActivity(intent);
    }
}); 
}

    }

セカンドスクリーン

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    public class Second extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.second);

ここでは、最初のクラスで使用されたキーを使用してインテントの合計を取得しています

    TextView text = (TextView) findViewById(R.id.textView2);
    text.setText(getIntent().getExtras().getInt("just"));


}

    }
4

2 に答える 2

1

log cat がなければ、これより前にクラッシュしていないと確信できませんが、次の行にテキストを設定すると:

text.setText(getIntent().getExtras().getInt("just"));

実際にこのメソッド定義を呼び出しています:

public final void setText (int resid)

getInt呼び出しから返された int を渡しているためです。これはリソース識別子を探しています(おそらく存在しないため、クラッシュします-logcat出力がなければ、以前にクラッシュしていないことを確認できません)。

あなたがする必要があるのは、intの文字列値を取得することです:

text.setText(String.valueOf(getIntent().getExtras().getInt("just")));
于 2013-07-03T01:57:56.150 に答える
0

のようなことをしてみてください

TextView text = (TextView) findViewById(R.id.textView2);
int sum = getIntent().getExtras().getInt("just");
text.setText(String.valueOf(sum));

setText()resource idこの値の getIntent().getExtras().getInt("just")を探しています。代わりに、渡したStringyour の値を取得する必要があります。int

さまざまな setText メソッド

また、整数以外が入力された場合に備えて、解析を で囲むtry/catchか、エラー チェックを行う必要があります。

try
{
    a = Integer.parseInt(num1.getText().toString());
    b = Integer.parseInt(num2.getText().toString());
    sum = a+b;
}
catch (NumberFormatException e)
{
    Log.e("TAG", "You're numbers are not real numbers :\\");
}   

明らかに、例外をログに記録するだけでなく、エラーメッセージまたはその他の関連するものを出力したくありません

于 2013-07-03T01:58:20.887 に答える