2011-07-15 463 views
-2

我已经在Main类中设置了EditBox变量。我想在另一个类中获得编辑框的值。但是返回一个空值。我在哪里做错了? 谢谢。为什么返回空值?

public class Main extends Activity{ 
{ 
EditText name; 
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
loadInfo(); } 

loadInfo() 
{ 
SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

     name.setText(preferences.getString("name", "")); 
} 

} 


public class A 
{ 
Main m; 

String str= m.name.getText().toString(); 
} 
+1

您发布的代码将无法编译,因为它是完全无效的。请发布您的实际代码或完整展示您的问题的可编译示例。 – eldarerathis

回答

3

你从不实例化m;您只需创建类型为Main的参考,并将其称为m。您必须使用:

Main m = new Main(); 
+0

对于这一点,他从不在'Main'类中实例化'name'(尽管语法无论如何都是完全无效的;该示例不会编译)。 – eldarerathis

0

如果您想要将字符串从Activity传递给Activity,则可以使用Intent

0

活动中,name = (EditText) findViewById(R.id.yourEditTextId);

要使用“名”(这是一个EditText一个奇特的名字,顺便说一句),其他类里面,你需要有主实例的引用,你可以做这个:mainInstance.name

尽管我认为公开“名称”并不是一个好主意。
在许多地方,你可以使用:findViewById()得到视图,View.getContext(), Adapter.getContext()拿到的背景下,这是主要的实例(你需要转换,如果你想用自己的方法。)

我没有”。 t测试,但我认为你不能在Android中实例化Main,像这样new Main()

无论如何,我建议你阅读一些基本的Android教程:)

相关问题