2011-07-15 12 views
-2

メインクラスにEditBox変数を設定しました。私は別のクラスのeditboxの値を取得したい。しかし、null値を返します。どこが間違っていますか?おかげさまで nullを返すのはなぜですか?

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

アクティビティからアクティビティへのパス文字列を使用する場合は、Intentを使用できます。アクティビティ内

0

name = (EditText) findViewById(R.id.yourEditTextId);

他のクラスの内側(ところで、のEditTextのための奇数の名前です)「名前」を使用するには、あなたがメインインスタンスへの参照を持っている必要があり、あなたが行うことができますこれはmainInstance.nameです。

「名前」を公開しておくことは良い考えではないと思いますが多くの場所で
は、あなたが使用することができます。findViewById()を表示を取得するには、View.getContext(), Adapter.getContext()をメインインスタンスであるコンテキストを取得するために(あなたがあなた自身のメソッドを使用する場合にキャストする必要があります。)私は「didnの

。私はあなたがこのnew Main()のようにアンドロイドでメインをインスタンス化することはできないと思う。

はとにかく、私はあなたには、いくつかの基本的なAndroidのチュートリアル:)

関連する問題