0

activity2のボタンにactivity1のEditTextに入力されたテキストを表示します。これは、複数のアクティビティを使用する私の最初のアプリですので、私はちょうど間違って渡すしようとしている可能性があります。私はそれを保存することによって直接EditText値にボタンのテキストを設定しようとしましたが、それは正しく動作しませんでした。どんな方向にも感謝しています! activity1でボタンが押されたときアンドロイド - アクティビティ2のボタンのactivity1のEditTextのテキストを使用

activity1

、START_DAYが呼び出されます。アプリをactivity2に送ります。

public class AddTasksActivity extends AppCompatActivity { 

    public final static String taskOne = "Task One Content"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_tasks); 
    } 

    public void start_day(View view){ 
     Intent intent = new Intent(this, DayTasksActivity.class); 
     intent.putExtra("taskOne", taskOne); 
     startActivity(intent); 
    } 
} 

activity2

現在ボタンがactivity1からテキストを示し、 "タスクの一つのコンテンツを。"だから私は物事を渡すのに何かをやっているが、私は何かを得ることはできないが、それは働いていると私はまだこれのようなものを全く見つけていない。

public class DayTasksActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_day_tasks); 

     Bundle bundle = getIntent().getExtras(); 
     String taskOne = bundle.getString("taskOne"); 

     Button buttonTaskOne = (Button) findViewById(R.id.button_task_one); 
     buttonTaskOne.setText(taskOne); 
    } 
} 
+1

あなたの質問は何ですか? – rahul

+0

@rahulボタンを編集テキストに設定された値に設定する方法。今はそれをしません。これは単にString taskOneを使用します。 – RaineShadow

答えて

0
  1. まず
  2. はその後、それぞれのActivityクラスにあなたの意見をインスタンス化したレイアウトファイルにあなたの意見にIDを与える
  3. そして、エディットテキストから、彼のテキストを取得し、バンドルにそれを保存し、それを渡し
  4. 第二の活動にバンドルから値を取得
  5. はボタンで値を設定し

Activity1

public class AddTasksActivity extends AppCompatActivity { 

private EditText myEditText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_tasks); 
    myEditText = (EditText) findViewById(R.id.put_your_id_here_form_layout_file); 
} 

public void start_day(View view){ 
    Intent intent = new Intent(this, DayTasksActivity.class); 
    intent.putExtra("taskOne", myEditText.getText().toString()); 
    startActivity(intent); 
} 
} 

Activity2

public class AddTasksActivity extends AppCompatActivity { 

private Button buttonTaskOne; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_day_tasks); 
    buttonTaskOne = (Button) findViewById(R.id.button_task_one); 
    Bundle bundle = getIntent().getExtras(); 
    String taskOne = bundle.getString("taskOne"); 
    if (taskOne != null){ 
     buttonTaskOne.setText(taskOne); 
    } 
} 
} 
+0

これは完璧に機能しました!一番上の階段をありがとう。彼らは確かにちょうどコピーし、貼り付けるのではなく、私がやっていることを正確に説明するのを助けました。 – RaineShadow

0

それはあなたがアンドロイドスタジオを使用することが最善です。アンドロイドスタジオがあなたのマニフェストファイルを処理するので。そして日食では、マニフェストの部分をあなた自身(マニフェストの新しいアクティビティを定義する)をしなければなりません。 @rahulは良い答えを出しましたが、単なる文字列の場合は、putExtraとgetExtraのメソッドを使用し、バンドルを使用しない方が良いと思います。ここで少し異なるコードは次のとおりです。 最初の活動はMainActivityです:

public class MainActivity extends AppCompatActivity { 

public Button btn; 
public String str; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final EditText et = (EditText) findViewById(R.id.et); 

    Button btn = (Button) findViewById(R.id.button1); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if(!et.getText().toString().equals("")) 

      str = et.getText().toString(); 

      Intent i = new Intent(MainActivity.this, Main2Activity.class); 
      i.putExtra("key", str); 
      startActivity(i); 
     } 
    }); 

} 

}

第二の活動はMain2Activityです:

public class Main2Activity extends AppCompatActivity { 

String str; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 

    final Button btn = (Button) findViewById(R.id.button2); 

    str = Main2Activity.this.getIntent().getExtras().getString("key"); 
    btn.setText("" + str); 
} 
} 
+0

これはまた、バンドルを使用しています。その単なるインラインコードlol – rahul

+0

はい、バンドルを使用しています。それはコードが少なく、Googleによって実装されています。 – Shahryar

+0

hmmmmmmmmmmmm、コードが少なく、行数が少なくて2つの異なるものです。ときには行数が少なくてもコードが少なくなるわけではありません。そして、常にライン/コードとロバスト性のトレードオフがあります。私たちはバンドルでも、確かで堅牢なヌルチェックを適用することができます。いつも共有して学ぶのが良い。 – rahul

関連する問題