Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从TextView获取字符串,将其传递给变量并传递给其他活动_Android_Android Activity_Textview - Fatal编程技术网

Android 从TextView获取字符串,将其传递给变量并传递给其他活动

Android 从TextView获取字符串,将其传递给变量并传递给其他活动,android,android-activity,textview,Android,Android Activity,Textview,各位, 我试图在MainActivity上设置一个TextView,以从用户处获取查询,然后将查询字符串传递给一个变量,该变量应传递给另一个活动,该活动将查询字符串传递给url,以便在MainActivity上定义的WebView上显示搜索 这是我的主要活动,还没有结束,因为我从这里开始有困难 public class MainActivity extends Activity { String query; TextView term = (TextView) findViewById(R

各位,

我试图在MainActivity上设置一个TextView,以从用户处获取查询,然后将查询字符串传递给一个变量,该变量应传递给另一个活动,该活动将查询字符串传递给url,以便在MainActivity上定义的WebView上显示搜索

这是我的主要活动,还没有结束,因为我从这里开始有困难

public class MainActivity extends Activity {
String query;

TextView term =  (TextView) findViewById(R.id.searchtext);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView intView = (WebView) findViewById(R.id.webView1);
    intView.getSettings().setBuiltInZoomControls(true);

}

public void openWikipedia(View view){

     Intent intent = new Intent(this, Wikipedia.class);
     intent.putExtra("query", query);
     startActivity(intent);
    }
Wikipedia活动应接收查询字符串并将其添加到字符串中,以完成url,以便在Wikipedia页面上进行搜索并在webView1上显示

下面是维基百科活动代码

public class Wikipedia extends Activity {

String query;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_wikipedia);
}

public void openwikipedia (View view){
    //String query = bundle.getString(query);
    String url = "en.wikipedia.org/wiki/Special:Search?search="+ query;
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    startActivity(i);
}   
}

我在理解如何将变量从一个活动传递到另一个活动以及如何从TextView查询中获取字符串时遇到一些问题

我尝试了一些针对堆栈溢出的解决方案,但要么无法使其工作,要么无法真正理解给定的过程

任何帮助都将不胜感激


提前感谢大家。

要从文本视图获取字符串:

TextView tv = (TextView) findViewById(R.id.tv_name);
String text = tv.getText().toString();
但实际上,您必须使用EditText从用户那里获取一些信息

将变量传递给intent的方式是正确的。要在其他活动中解包,必须执行以下操作:

Intent intent = this.getIntent();
String text = intent.getStringExtra("query");

要从
文本视图中获取文本,请执行以下操作:

TextView my_tv = (TextView) findViewByid(R.id.your_textview_id);
String my_tv_text = my_tv.getText().toString();
要将数据传递给您的另一个活动,您可以选择使用
Intent
s:

Intent intent = new Intent(this, WikiPedia.class);
intent.putExtra("my_data", my_tv_text);
startActivity(intent);
要在WikiPedia活动中接收数据,请执行以下操作:

Intent passed_intent = getIntent();
String passed_text = intent.getStringExtra("my_data");
首先:

TextView term =  (TextView) findViewById(R.id.searchtext);
将给您一个运行时错误,因为在设置页面(布局)的内容视图之前无法初始化TextView

因此,在
onCreate
中,您有以下代码行:

setContentView(R.layout.activity_wikipedia);
intent.putExtra("query", query);
因此,在这行代码之后,您可以将TextView
术语
初始化为布局中的任何TextView。例如:

TextView term; // declare here

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // but initialize here
    term = (TextView) findViewById(R.id.searchtext);

    WebView intView = (WebView) findViewById(R.id.webView1);
    intView.getSettings().setBuiltInZoomControls(true);

}

第二:

在声明
String查询之后,您从未实际初始化过
query
位于类的顶部

您需要获取用户在EditText中搜索的文本,可能如下所示:

EditText et = (EditText)findViewById(R.id.editTextId);
String query = et.getText().toString();

最后:

 Intent intent = new Intent(this, Wikipedia.class);
 intent.putExtra("query", query);
 startActivity(intent);
intent.putExtra
query
字符串“附加”到intent。然后您可以在另一个活动(
Wikipedia
)中接收
query
字符串,如下所示:

String query = "";
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
    query = bundle.getString("query");
}
String url = "en.wikipedia.org/wiki/Special:Search?search="+ query;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

请注意,您需要使用
bundle.getString(“查询”)
而不是
bundle.getString(查询)
,因为
“查询”
是对附加到其他类的意图的字符串的引用,从这行代码:

setContentView(R.layout.activity_wikipedia);
intent.putExtra("query", query);

在您的情况下,使用查询而不是文本作为字符串。谢谢您,Fedor。是的,我需要更改EditText的文本视图。还没有完全发挥作用,但已经步入正轨。就快到了。我没有收到任何错误,但一旦我单击Wikipedia按钮,它就会打开Hello World,甚至不在Package Explorer中。您的意思是当
Wikipedia
活动打开时,还是当
public void openwikipedia(查看)时{
已运行?只是修复了它,但与此同时,当我按下Wikipedia按钮时,它不会显示任何内容,尽管它会更改屏幕顶部活动的名称。因此,我相信我无法将该页面调用到我的webView1中,它是在activity_main.xml上定义的,这是我使用的唯一布局。@HBT Hmmm…I'v我从来没有使用过网络视图,所以我不确定会有什么问题。但是,
startActivity
不应该和网络视图有任何关系,是吗?我不知道这个问题。谢谢你的帮助,迈克。我感谢你为这件事付出的所有时间。我会继续研究的。