2012-05-13 12 views
1

私は主なアクティビティクラスとfindクラスを持っています。私は主な活動変数の変数にアクセスする必要があります、それは "クラス"から "名前"です。私は以下のスニペットコードでアクセスしようとしましたが、エラーが発生します。別のクラスのメインアクティビティ変数にアクセスするにはどうすればよいですか?他のクラスのAndroidアクティビティのメインアクティビティ変数

public class main extends Activity { 

    public static String name=null; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button1=(Button)findViewById(R.id.button1); 

     final EditText edittext = (EditText) findViewById(R.id.editText1); 

     button1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       name=edittext.getText().toString(); 

      } 
     });             
} 

私の第二のクラス....

public class find { 

public void finder(){ 

    main mainactivity=new main(); 
    String incoming_name =mainactivity.name;//I can not use like that ? 
      // do something 
} 

}

答えて

8

1)あなたが活動をインスタンス化してはならない、意図は、あなたが変数public staticを宣言しているので、あなたは、単にmain.nameで)クラスをインスタンス化せず(それを参照することができます)

2の活動を開始...

+0

公開したくない場合はどうすればいいですか?どうすれば入手できますか? –

+1

@FranciscoCorralesMorales OOPSの基本コンセプトは、アクセス修飾子が公開されていない限り、クラスとそのコンテンツにアクセスできないと言っています。 – IteratioN7T

4

あなたは別の(外側)クラスから直接Activityの変数にアクセスする必要はありません。これは、アクティビティがUIの一部であり、アプリケーションのバックエンドではないので、悪い習慣です。

また、あなたの例では、nameプロパティはstaticであり、特定のインスタンスに属していません。

+0

だから、私はこの場合にedittextの価値をどのように得ることができますか? –

+0

これは、クラスとファインダの目的との関係を知る必要があります。 – MByD

+0

@MByD私の活動ではフラグがあり、ユーザーがいくつかのプロセスを経た後にフラグメントから更新したいと考えています。アクティビティの変数を更新する適切な方法は何ですか? –

関連する問題