从EditText获取文本到另一个活动的字符串

时间:2016-07-21 07:45:28

标签: java android android-activity android-edittext gettext

我一直在寻找,但我找不到路。我找到的解决方案不起作用,或者我不知道如何实施它们。

我的主要活动

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

    }
    }

这已经在我的代码中,是我发现的两种解决方案,但我不知道如何使用它们:

 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" />

在&#34; ractivity&#34;布局我是这个PlainText。在这个中我想添加来自其他活动/布局的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" />

&#34; nameE2&#34;必须是EditText的字符串。

我很想知道如何解决它。

提前致谢。如果您需要其他数据,请告诉我。

5 个答案:

答案 0 :(得分:1)

使用

 startActivity(intent); 

而不是

 startResultActivity(null);

Button onClick

答案 1 :(得分:1)

这似乎很好,只需稍作修改。

viewController.loadViewIfNeeded()

此处不是将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,而是将创建的Intent传递给此类似的:

startResultActivity()

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()

编辑: 正如我所提到的,您不能直接在布局文件中使用您的变量。

您必须动态设置它。您可以在ResultActivity的public void startResultActivity(Intent intent){ startActivity(intent); } 方法中执行此操作。它必须与此类似:

onCreate()

如果在您的第​​二个布局文件中有一个带有 textView ID的@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); } ,这将有效。

答案 2 :(得分:0)

试试这段代码:

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


            }

答案 3 :(得分:0)

将onClickListener更改为

--color=always

如果没有任何文字,您将在开始时收到文字,请移动

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

在bVerify视图的onClick内部,这样当客户端点击按钮

时它将读取当前文本

答案 4 :(得分:0)

startResultActivity(null);更改为startActivity(intent);。 然后在另一个需要使用该字符串的Activity中:

Intent intent = getIntent();
String getExtra = intent.getStringExtra("EXTRA_MESSAGE");
TextView.setText(getExtra);