我有2个xml,名称是formOne.xml和formTwo.xml
formOne.xml如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<EditText
android:id="@+id/editTextName"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</LinearLayout>
和fomTwo.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<Button
android:id="@+id/buttonSave"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:text="@string/btSave" />
</LinearLayout>
我有两个活动,名称是FormOne.java和FormTwo.java
FormOne.java:
public class FormOne extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.formOne);
EditText etName = (EditText) findViewById(R.id.editTextName);
}
}
和FormTwo.java:
public class FormTwo extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.formTwo);
EditText etName = (EditText) findViewById(R.id.editTextName);
Button btSave = (Button) findViewById(R.id.buttonSave);
btSimpan.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (etName.getText().length() != 0) {
Toast.makeText(FormTwo.this, "Name is : "+etName.getText().toString(), Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(FormTwo.this, "Input the name please", Toast.LENGTH_SHORT).show();
}
// TODO Auto-generated method stub
}
});
}
我想从editTextName中捕获值,并且值可以在FormTwo.java中显示Toast。
但我的申请部队关闭, 我怎样才能获得值editTextName,而不用bundle传递数据。因为在FormOne.java中没有任何按钮来发送值editTextName。
先谢谢
答案 0 :(得分:0)
将edittext
值保存在sharedpreferences
edittext事件的ontextchangelistener()
上,并将sharedpreferences
中的数据转换为form2活动。
答案 1 :(得分:0)
第一个活动必须启动第二个活动,将String
个对象作为参数传递。否则,您如何确保第一个活动真正开始并且用户在文本字段中键入内容?
如果你真的不想按需启动第二个活动,你唯一的选择是使用一个单独的存储库,如SQLiteDatabase,共享首选项,文件或存储在互联网上的东西,并使第二个选择一个从该存储库中值异步,最终提供一个默认值来计算用户没有明确保存任何内容的情况。
显然,第一次行动时必须在被要求时写入此存储库。但是这种设计对我来说可能看起来很麻烦(即通过持久存储读/写传递字符串)
答案 2 :(得分:0)
您正试图获得第二个活动中第一个活动中的编辑文本的参考。所以它可能会抛出空指针异常并导致崩溃。您无法在第二个活动的第一个活动中引用编辑文本。您将获得使用setcontentview()为该活动设置的视图的参考。
答案 3 :(得分:0)
首先你的应用程序会崩溃,因为你没有在你的xml中为第二个活动添加EditText而你在onCreate()方法中为第二个活动声明它。
其次,如果您想在不使用intent.putExtra(“”)的情况下检索活动之间的字符串;你可以按照以下方法做的方法:
1 - 您可以创建这样的独立类:
public class Myclass{
private String myString;
public void setString(String str){
myString=str;
}
public String getString(){
return myString;
}
}
2-在您的Activity1中,您可以通过
为该字符串赋值String myString="What ever the string you have"
MyClass.setString(myString);
3 - 你可以在任何你想要的地方调用该字符串:
String myString=MyClass.getString():