将文本从 EditText 转换为字符串到另一个 activity
Get text from EditText into string to another activity
我一直在寻找,但找不到路。我找到的解决方案不起作用或我不知道如何实施它们。
我的主Activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText txtDescription = (EditText) findViewById(R.id.nameE);
final String nameE2 = txtDescription.getText().toString();
Button bVerify = (Button) findViewById(R.id.verifyB);
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startResultActivity(null);
}
});
}
public void startResultActivity(View view){
Intent sra = new Intent(this, ResultActivity.class);
startActivity(sra);
}
}
这已经在我的代码中,是我随处找到的 2 个解决方案,但我不知道如何使用它们:
EditText txtDescription = (EditText) findViewById(R.id.nameE);
String nameE2 = txtDescription.getText().toString();
&
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
在 activity_main 中,我有这个 EditText 和这个按钮:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="Name"
android:ems="10"
android:id="@+id/nameE"
android:layout_below="@+id/NameTxt"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:editable="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/verifyB"
android:layout_alignParentStart="true"
android:text="@string/verifyB"
android:layout_alignParentEnd="true"
android:layout_below="@+id/nameE"
android:layout_alignParentLeft="true" />
在 "ractivity" 布局中,我有这个 PlainText。在这一个中,我想从另一个 activity/layout.
添加 EditText 输入
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello + nameE2 + . Are you sure you want to accept these terms?"
android:id="@+id/textView"
android:textSize="20dp"
android:textColor="@color/abc_input_method_navigation_guard" />
"nameE2" 必须是 EditText 的字符串。
我很想知道如何解决它。
提前致谢。如果您需要其他数据,请告诉我。
试试这个代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText txtDescription = (EditText) findViewById(R.id.nameE);
final String nameE2 = txtDescription.getText().toString();
Button bVerify = (Button) findViewById(R.id.verifyB);
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startActivity(intent);
}
});
}
}
使用
startActivity(intent);
而不是
startResultActivity(null);
在你的Button onClick
这看起来不错,稍作修改。
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startResultActivity(null);
}
});
这里不是将null
传递给startResultActivity()
,而是将创建的Intent传递给类似这样的:
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final String nameE2 = txtDescription.getText().toString();
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startResultActivity(intent);
}
});
startResultActivity()
方法必须如下所示:
public void startResultActivity(Intent intent){
startActivity(intent);
}
编辑:
正如我提到的,您不能直接在布局文件中使用变量。
你必须动态设置它。您可以在 ResultActivity 的 onCreate()
方法中执行此操作。它必须看起来类似于:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ractivity); // your second layout file
TextView textView = (TextView) findViewById(R.id.textView);
String stringResult = getIntent().getStringExtra(EXTRA_MESSAGE);
String textViewText = "Hello "+ stringResult +". Are you sure you want to accept these terms?";
textView.setText(textViewText);
}
如果在您的第二个布局文件中有一个带有 textView id 的 Textview
,这将起作用。
将 onClickListener 更改为
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
final String nameE2 = txtDescription.getText().toString();
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startActivity(intent);
}
});
当它没有任何文本时,您会在开始时得到文本,所以移动
final String nameE2 = txtDescription.getText().toString();
在 bVerify 视图的 onClick 内部,以便在客户端单击按钮时读取当前文本
将startResultActivity(null);
改为startActivity(intent);
。
然后在另一个 Activity 需要使用该字符串的地方:
Intent intent = getIntent();
String getExtra = intent.getStringExtra("EXTRA_MESSAGE");
TextView.setText(getExtra);
我一直在寻找,但找不到路。我找到的解决方案不起作用或我不知道如何实施它们。
我的主Activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText txtDescription = (EditText) findViewById(R.id.nameE);
final String nameE2 = txtDescription.getText().toString();
Button bVerify = (Button) findViewById(R.id.verifyB);
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startResultActivity(null);
}
});
}
public void startResultActivity(View view){
Intent sra = new Intent(this, ResultActivity.class);
startActivity(sra);
}
}
这已经在我的代码中,是我随处找到的 2 个解决方案,但我不知道如何使用它们:
EditText txtDescription = (EditText) findViewById(R.id.nameE);
String nameE2 = txtDescription.getText().toString();
&
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
在 activity_main 中,我有这个 EditText 和这个按钮:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="Name"
android:ems="10"
android:id="@+id/nameE"
android:layout_below="@+id/NameTxt"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:editable="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/verifyB"
android:layout_alignParentStart="true"
android:text="@string/verifyB"
android:layout_alignParentEnd="true"
android:layout_below="@+id/nameE"
android:layout_alignParentLeft="true" />
在 "ractivity" 布局中,我有这个 PlainText。在这一个中,我想从另一个 activity/layout.
添加 EditText 输入<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello + nameE2 + . Are you sure you want to accept these terms?"
android:id="@+id/textView"
android:textSize="20dp"
android:textColor="@color/abc_input_method_navigation_guard" />
"nameE2" 必须是 EditText 的字符串。
我很想知道如何解决它。
提前致谢。如果您需要其他数据,请告诉我。
试试这个代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText txtDescription = (EditText) findViewById(R.id.nameE);
final String nameE2 = txtDescription.getText().toString();
Button bVerify = (Button) findViewById(R.id.verifyB);
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startActivity(intent);
}
});
}
}
使用
startActivity(intent);
而不是
startResultActivity(null);
在你的Button onClick
这看起来不错,稍作修改。
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startResultActivity(null);
}
});
这里不是将null
传递给startResultActivity()
,而是将创建的Intent传递给类似这样的:
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
final String nameE2 = txtDescription.getText().toString();
/** Called when the user clicks the Next button */
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startResultActivity(intent);
}
});
startResultActivity()
方法必须如下所示:
public void startResultActivity(Intent intent){
startActivity(intent);
}
编辑: 正如我提到的,您不能直接在布局文件中使用变量。
你必须动态设置它。您可以在 ResultActivity 的 onCreate()
方法中执行此操作。它必须看起来类似于:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ractivity); // your second layout file
TextView textView = (TextView) findViewById(R.id.textView);
String stringResult = getIntent().getStringExtra(EXTRA_MESSAGE);
String textViewText = "Hello "+ stringResult +". Are you sure you want to accept these terms?";
textView.setText(textViewText);
}
如果在您的第二个布局文件中有一个带有 textView id 的 Textview
,这将起作用。
将 onClickListener 更改为
bVerify.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/** Called when the user clicks the Next button */
final String nameE2 = txtDescription.getText().toString();
Log.d("EditText", nameE2);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
intent.putExtra(EXTRA_MESSAGE, nameE2);
startActivity(intent);
}
});
当它没有任何文本时,您会在开始时得到文本,所以移动
final String nameE2 = txtDescription.getText().toString();
在 bVerify 视图的 onClick 内部,以便在客户端单击按钮时读取当前文本
将startResultActivity(null);
改为startActivity(intent);
。
然后在另一个 Activity 需要使用该字符串的地方:
Intent intent = getIntent();
String getExtra = intent.getStringExtra("EXTRA_MESSAGE");
TextView.setText(getExtra);