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