我正在尝试在我的Android应用程序中启动一个新活动,我正在尝试将一个简单的字符串从第一个活动传递到第二个活动。我希望字符串在第二个活动中显示在textview中,但它不起作用。我做错了什么?
最初的活动:
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在第二个活动中正确显示;它适用于任何虚拟文本,而不是变量。
答案 0 :(得分:3)
你过早地实例化字符串,在创建监听器时,你应该在监听器被调用时得到它:
@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)启动变量,这会使代码更容易让其他人感到困惑(比如我:))
答案 1 :(得分:0)
在将任何值添加到OnClickListener之前,url的值将在实例化时设置。尝试在onClick方法的主体中读取TextView中的值。
答案 2 :(得分:0)
在代码中输入错误只是在buttonsubmit.onclicklistener方法中删除了url旁边的String。如果你想要从一个活动发送一个字符串到另一个活动,你不必为结果开始活动。 你的第二个活动就是这个。
Bundle b=getIntent().getExtras();
String url = b.getInt("pschoolurl");
答案 3 :(得分:0)
检查一下,只需将此代码放入第一个活动的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);
}
现在在第二个活动中放了这个,注意: - >你会尝试将传递的活动字符串首先保存到活动中的另一个字符串,然后它将无法工作,你应该直接将字符串传递给loadurl而不是保存并传递给loadurl。
Intent intent = getIntent();
w.loadUrl(intent.getExtras().getString("epuzzle"));
w.getSettings().setJavaScriptEnabled(true);
请告诉我它是否适合您。