字符串不传递到第二个Android活动
我想在我的Android应用程序中开始一个新的活动,并且我试图从第一个活动传递一个简单的字符串到第二个活动。现在我想让字符串显示在第二个活动的textview中,但它不起作用。我究竟做错了什么?字符串不传递到第二个Android活动
的初始活性:
package com.amritayalur.mypowerschool;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MyPowerSchoolActivity extends Activity {
Button buttonSubmit;
TextView TextViewTitle;
TextView TextViewDesc;
EditText EditTextURL;
String url = "";
String str;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonSubmit = (Button) findViewById(R.id.buttonSubmit);
TextViewTitle = (TextView) findViewById(R.id.TextViewTitle);
TextViewDesc = (TextView) findViewById(R.id.TextViewDesc);
EditTextURL = (EditText) findViewById(R.id.EditTextURL);
//Start TextView
TextViewTitle.setText("MyPowerSchool");
//button listener
buttonSubmit.setOnClickListener(new View.OnClickListener() {
String url = EditTextURL.getText().toString();
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(MyPowerSchoolActivity.this,
creds.class);
i.putExtra("pschoolurl", url);
final int result = 1;
startActivityForResult(i, result);
}
});
}
}
第二活动:
package com.amritayalur.mypowerschool;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.webkit.WebView;
import android.widget.Toast;
import android.widget.TextView;
public class creds extends Activity {
String test;
TextView TextViewTest;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Intent intent = getIntent();
String test = intent.getExtras().getString("pschoolurl");
TextViewTest = (TextView) findViewById(R.id.TextViewTest);
TextViewTest.setText(test);
}
}
我知道TextView的正确显示在所述第二活性;它适用于任何虚拟文本,而不是变量。
实例化字符串为时尚早,创建侦听器时,相反,你应该得到它时,监听被调用:
@Override
public void onClick(View v) {
Intent i = new Intent(MyPowerSchoolActivity.this, creds.class);
i.putExtra("pschoolurl", EditTextURL.getText().toString());
// get the text here ^^^
final int result = 1;
startActivityForResult(i, result);
}
顺便说一句,请遵循命名惯例,并开始变量具有较低大小写字母(editTextURL)它会使代码更容易让其他人感到困惑(像我:))
太棒了!你介意给我解释过早实例化字符串的问题吗? – Slicekick 2012-02-17 01:22:39
在初始化它的时候,也就是当你创建监听器的时候,editText仍然是空的,所以你给它分配了一个空字符串。 – MByD 2012-02-17 01:24:13
下面是这些命名约定的链接:http://source.android.com/source/code-style.html - 顺便说一句,如果偶尔出现某种情况,不要太紧张 - 例如,Binyamin错过了关于“对待首字母缩略词”的部分:P(editTextUrl) – 2012-02-17 01:27:57
在为其添加任何值之前,您的OnClickListener的实例化时间将为url设置值。请尝试从onClick方法的主体中读取TextView中的值。
它在代码中没有错,只是在buttonsubmit.onclicklistener方法中删除url旁边的字符串。如果你想从一个活动发送一个字符串到另一个活动,你不必为结果开始活动。 这是你的第二个活动。
Bundle b=getIntent().getExtras();
String url = b.getInt("pschoolurl");
检查了这一点只是把这个代码在你的第一个活动注意的onclick: - >直接捕获的EditText DONOT保存在字符串编辑文本,然后通过它,如果你会做表演,然后串不会通过。看下面的例子
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(this,Web.class);
i.putExtra("epuzzle",urlenter.getText().toString());
final int result = 1;
startActivityForResult(i, result);
}
现在在第二个活动把这个,注意: - >是你会尝试拯救活动的passeed串首先在在活动的另一个字符串第二那么它不会工作,你应该直接将字符串传递给loadurl,而不是保存并传递给loadurl。
Intent intent = getIntent();
w.loadUrl(intent.getExtras().getString("epuzzle"));
w.getSettings().setJavaScriptEnabled(true);
plz让我知道它是否适用于您。
只是不会工作 - 你的意思是它崩溃?显示一个空字符串?怎么了? – 2012-02-17 01:12:57
只是第二项活动中的空白背景。 textview不显示任何字符。 – Slicekick 2012-02-17 01:14:00
使用'Log.i(“MyPowerSchoolActivity”,“Url =”+ url);'在添加到意图之前查看'url'的值。 – JackMahoney 2012-02-17 03:19:56