0

私はこれに慣れていませんが、機能ボタンを正常に作成しました。ユーザー入力 (activity_main の editText1) をレシピ (2 番目のアクティビティ) に渡そうとしています。最初のコードは機能ボタンです。2 番目のアクティビティ レイアウトに表示される情報を渡す際に、コードの 2 番目のラウンドで何が間違っていますか?

 package com.example.andrew;

 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;

 public class MainActivity extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       Button b=(Button) findViewById(R.id.button1);
       b.setOnClickListener(new OnClickListener() {
           public void onClick(View v){
               startActivity(new Intent(MainActivity.this, Recipe.class));
        }
        });
     }



     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
         return true;
     }

  }

コードの第 2 ラウンド: 情報を渡す試み。最初の活動

package com.example.andrew;

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;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         Edit Text et = (Edit Text) findViewById(R.id.editText1);
         String theText =  et.getText().toString();
         Intent i = new Intent(this, Recipe.class);//Recipe is my second class
         i.putExtra("text_label", theText);//what is "text_label"? Where should it be?
         Button b=(Button) findViewById(R.id.button1);
         b.setOnClickListener(new OnClickListener() {
          public void onClick(View v){
                startActivity(new Intent(MainActivity.this, Recipe.class));
        }
     });
   }

 }

そして、私の 2 番目の活動では、次のことを行います。

 public class Recipe extends Activity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.recipe_layout);
         Intent i = getIntent();
         uriStringi = i.getStringExtra("text_label");//is text_label on actv. 1?
               startActivity(i);
         }
4

1 に答える 1

0

インテントにデータを追加していますが、アクティビティの開始中はデータを使用していません。代わりに、新しい意図を作成します。

解決:

現在のアクティビティで、新しいインテントを作成します。

Intent i = new Intent(this, Recipe.class);

i.putExtra("text_label", theText);

startActivity(i); // これを onClick() に書きます

次に、レシピでこれらの値を取得します。

バンドル エクストラ = getIntent().getExtras();

if (エクストラ != null) {

String value = extras.getString("text_label");

}

于 2013-10-04T04:02:39.327 に答える