0

これは、より大きなコードの簡略化されたバージョンです。私は Android プログラミングを始めたばかりで、この問題に 1 時間以上悩まされていました。

    /**Main Activity**/

    sumBut.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            Intent intent = new Intent(MainActivity.this, SumActivity.class);
            intent.putExtra("var1", et1.getText().toString());
            intent.putExtra("var2", et2.getText().toString());
            startActivity(intent);
        }
    });

このコードは、テキスト ボックスから 2 つの変数を取得し、これらの数値の合計が表示される別のアクティビティにユーザーを誘導します。

ターゲット アクティビティは次のとおりです。

    public class SumActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sum);

    TextView tv = (TextView) findViewById(R.id.textView1);
    Intent intent = getIntent();
    int a = Integer.parseInt(intent.getStringExtra("var1"));
    int b = Integer.parseInt(intent.getStringExtra("var2"));
    int c = a+b;
    tv.setText(c);
}

私が作成したすべてのクラスの res/layout フォルダー内に関連する xml ファイルがあります。

私の Manifest.xml ファイルからのサンプル

  <activity
        android:name="com.example.summer.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.example.summer.SumActivity"></activity>
    <activity android:name="com.example.summer.DifActivity"></activity>

LogCat ここに画像の説明を入力

4

4 に答える 4

3

メソッドでTextView に int を設定してtv.setText(c)いるため、textview は文字列の ID (R.string.name など) を渡していると見なします。これを行う必要があります:

tv.setText(c + "");
于 2013-07-11T22:00:56.807 に答える
3

これはあなたの問題です

 tv.setText(c);

に変更します

 tv.setText(String.valueOf(c));

ドキュメントでここに表示されるように、さまざまsetText()な方法があります。パラメータとしてを受け入れる呼び出しているものは、その「id」を持つリソースを見つけるために使用されるため、変数を に変更する必要があります。これが、例外が発生する理由です。変数が何であれ、の を見つけることができません。intStringResource Not foundString resourceidc

補足ですが、try/catch他のエラーチェックを行っていない限り、解析コードを a でラップしたい場合やNumber Format Exception、ユーザーが整数以外の値を入力した場合に a になる可能性があります。

于 2013-07-11T22:01:00.897 に答える
1

Here's your problem:

Intent intent = getIntent();
int a = Integer.parseInt(intent.getStringExtra("var1"));
int b = Integer.parseInt(intent.getStringExtra("var2"));
int c = a+b;
tv.setText(c);

The setText() overload that you are calling expects either a string or an integer representing a resource identifier. Since the type of c is int it is interpreting it as a resource identifier!

Replacing the last line with this should fix it:

tv.setText(Integer.toString(c));

Hope that helps!

于 2013-07-11T22:01:43.847 に答える
0

注意して、通常は logcat を見てください。最初の文字列は、「android.content.res.resources$notfoundexception string resource id」という問題によって報告されているようです。つまり、setText() メソッドには文字列パラメーターが含まれている必要があります。あなたの問題Android: android.content.res.Resources$NotFoundException: String resource ID #0x5の解決策に関連する同じ問題

于 2013-07-11T22:14:51.343 に答える