呼び出しアクティビティのインスタンス変数を扱うことができなければならない非アクティビティクラス、および非活動クラスC.Cの方法を使用するために、私は2つのアクティビティのA及びBを有する
での作業、私は現在実行中のアクティビティからCのインスタンスcを作成します(Aはフォアグラウンド、AはCを作成したとします)。
ここで、cからアクティビティAのインスタンス変数を使いたいとします。私は何をすべきか?
私は複数のアクティビティに対して非アクティビティCクラスを使用しようとしています。私を助けてください!私はそれをたくさん研究しましたが、まだそれについて有用な何かを見つけることができませんでした。
ActivityOne.java::(
これは、例えば、コードされ
package com.example.vaibhav.a21matchsticks;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Example extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
// Now comes the method, I want to use in the non-activity java class.
public void buttonClick(View view) {
EditText editText = (EditText) findViewById(R.id.editMe); //finds the view from the activity
int i = Integer.parseInt(editText.getText().toString());
//Below code changes the view state, if the condition is true
if(i<4) {
findViewById(R.id.button).setEnabled(false);
}
}
は、一つのEditTextビュー(idの 'editMe')及びボタンを有する線状レイアウトを有するようにXMLファイルを想定します(id 'button')。このような1つ以上のアクティビティがあり、それぞれ少なくとも2つ以上のビューを持っています。異なる活動のための条件文および対応するレイアウトを変更する悲しい。
これは非常に曖昧です。 Cクラスは何をすべきなのですか?あなたのアクティビティクラスのメソッドを別の場所から呼び出すだけでよい場合は、そのインスタンスを渡すことができます。しかし、アクティビティのライフサイクルは、あなたが慎重でない場合、その計画にいくつかの落とし穴を投げることができます。 – solarshado
@solarshadowもちろん、この質問のCクラスは何も役に立ちません。それは私の質問の一例になるはずだった。私の元のコードでは、私は3つの活動があります。これらのアクティビティのそれぞれは、一連の命令を実行するために同じコードを使用します。だから私はいくつかの行を節約するために、それらをすべて1つの非活動クラスに入れることに決めました。しかし、私は、このクラスに入れようとしているコードは、呼び出しアクティビティのいくつかのビューを参照することに気付きました。 – vaibhavS
あなたがやっていることの詳細に応じて、Cを他のアクティビティクラスのスーパークラスとして構築することができます。 setContentView()をオーバーライドすると、superの実装を呼び出した後に必要なビューを取得できます。 – solarshado