android - 在活动 2 的按钮上使用活动 1 中 EditText 中的文本

android - Use text from EditText in activity1 on button in activity2

我希望 activity2 中的按钮显示在 activity1 中的 EditText 中输入的文本。这是我第一个使用多个 activity 的应用程序,所以我可能只是想传递错误。我已经尝试通过保存将按钮文本设置为直接的 EditText 值,但这并不能正常工作。任何方向将不胜感激!

activity1

start_day 在 activity1 中的按钮被按下时被调用。它将应用程序发送到 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 "Task One Content." 的文本所以我在传递东西方面做的是正确的,但我似乎什么也得不到,但我没有得到任何东西还没有完全找到这样的东西。

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. 首先在布局文件中为您的视图提供 ID
  2. 然后在各自的 Activity class
  3. 中实例化您的视图
  4. 然后从编辑文本中获取文本并将其保存在包中并传递
  5. 在第二个 activity
  6. 中从包中获取值
  7. 在按钮中设置值

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);
    }
 }
}

最好使用android工作室。因为 android studio 会为您处理清单文件。在 Eclipse 中,您必须自己完成清单部分(在清单中定义新的 activity )。 @rahul 给出了一个很好的答案,但我认为如果它只是一个字符串,最好使用 putExtra 和 getExtra 方法而不是使用包。这里有一点不同的代码: 首先 activity 是 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);
        }
    });

}

}

第二个Activity是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);
}
}