将EditText传递到另一个活动,它可以向我显示任何内容

时间:2018-12-11 15:17:23

标签: android xml android-intent

我在xml中有一个编辑文本,其中有名称,写名字或其他东西时,谢谢打开了一个要单击的按钮,然后这个单击的按钮使我进入了另一个活动,但是我需要在其中粘贴我写的内容EditText中的MainActivity。

这是我的代码。

Button btnSearch;
public EditText searchPlugin;

searchPlugin = findViewById(R.id.etSearch);    
btnSearch = findViewById(R.id.btnSearch);
        btnSearch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, ActivitySearchEngine.class);
                String test = searchPlugin.getText().toString();
                intent.putExtra("TextBox", test);
                startActivity(intent);
            }
        });

这是另一个活动

setContentView(R.layout.activity_search_result);
Intent i = new Intent(ActivitySearchEngine.this, MainActivity.class);
String text = i.getStringExtra("TextBox");


searchPlugin = findViewById(R.id.etSearch);
webView = findViewById(R.id.webView);
searchPlugin.setText(text);

这是发送给另一个活动的EditText和Button的主要活动的xml

<EditText android:id="@+id/etSearch" android:imeOptions="actionGo|flagNoExtractUi" style="@style/SearchEditText.MainSearch" />
<Button android:id="@+id/btnSearch" style="@style/ButtonSearch" />

这是预期的EditText的xml

<EditText android:id="@+id/etSearch" style="@style/SearchEditText.MainSearch"/>
<ImageButton android:id="@id/btnClearSearch" style="@style/ImageButtonClose" />
<ImageButton android:id="@id/imgBtnStopLoad" style="@style/ImageViewStopLoad" />

6 个答案:

答案 0 :(得分:3)

在您的第二项活动中:

String text = getIntent().getExtras().getString("TextBox");

答案 1 :(得分:2)

在第二个活动中,您需要执行以下操作来检索文本:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    setContentView(R.layout.activity_search_result); //after this
    Bundle arguments = this.getIntent().getExtras();
    String yourString = arguments.getString("TextBox");
}

答案 2 :(得分:2)

在第二个活动中代替

Intent i = new Intent(ActivitySearchEngine.this, MainActivity.class);
String text = i.getStringExtra("TextBox");

将此

String text = getIntent().getExtras().getString("TextBox");

要在webView中显示google,请使用此

webView.loadUrl("https://www.google.com/search?q=" + text);

答案 3 :(得分:2)

在您的ActivitySearchEngine中,而不是以下内容:

Intent i = new Intent(ActivitySearchEngine.this, MainActivity.class)
String text = i.getStringExtra("TextBox");

尝试一下:

Intent i = getIntent();
String text = i.getStringExtra("TextBox");

在您的情况下,您没有得到先前的意图,您只是在创建一个新的意图,它将使您返回,并且该意图没有任何额外的内容。相反,我要做的是获取原始意图,然后获取数据。

答案 4 :(得分:2)

您希望通过以下方式获得调用活动的意图:

Intent intent = getIntent(); 

然后,您想从传递的意图中获得额外的捆绑包:

Bundle extras = intent.getExtras(); 

从那里,您可以获取带有正确密钥传递的字符串:

extras.getString("TextBox", "This is the default value in case the string extra is null");

答案 5 :(得分:2)

在这一行

Intent i = new Intent(ActivitySearchEngine.this, MainActivity.class);

您正在创建一个新的意图,而不是传递给第二个活动的意图。因此,只需替换为

Intent i = getIntent();

这样,您实际上就可以获取已传递的Intent,您有兴趣从中获取更多的信息。