2011-07-15 462 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教程:)

相關問題