0

editText (年) を含む ACTIVITY があるので、JAVA クラスでこの editText の値を取得したいと考えています。この Java クラスには rawQuery を使用するメソッドがあり、このクエリでは次の値を使用したいからです。 WHERE句の変数(活動からの年)、フィルターを作成するため、アプリはeditTextに挿入された年でデータを検索するだけです...

私はこのように試しました:

JAVA CLASS では、変数とその gettes と setter を作成します... private int year;

public NovoNivelGlicemicoDAO() {

}

public NovoNivelGlicemicoDAO(int ano) {
    super();
    this.ano = ano;
}

public int getYear() {
    return year;
}

public void setYear(int year) {
    this.year = year;
}

   // Method with query is here (obs: the method works fine, because if I use in the clause where, for example, 2013, it works, but when I try to get the year like this getYear() it does not bring any result.

私のアクティビティはシンプルです。コンストラクターを呼び出してセットを使用するだけです:

JavaClass year= new JavaClass();

int year= (Integer.parseInt(ed_year.getText().toString()));

year.setYear(year);

アクティビティから年を取得できない理由を誰かが知っている場合は、教えてください;)

ありがとうございました。

4

1 に答える 1

0

yearここで再初期化します

int year= (Integer.parseInt(ed_year.getText().toString()));

新しい変数が必要です

JavaClass javaClass= new JavaClass();  //either rename this variable or the other one

int year= (Integer.parseInt(ed_year.getText().toString()));

javaClass.setYear(year);

それがまさにあなたのコードの外観である場合intsetYear()メソッドがないためコンパイルされないと思います。また、どのように使用しているかはわかりませんが、Activityが破棄されるとその参照が失われます。それが望ましくない場合は、static変数を作成JavaClassして値を保持するか、永続ストレージに格納する必要があります。

アップデート

問題は、 の値がJavaClass別の から使用されようとしていることActivityです。これで参照が作成されるため、アクセスしようとしてActivityいる次の場所に移動すると失われます。で作成されるActivity変数は、 this を離れても値を保持できるように宣言する必要があります。yearJavaClassstaticActivity

これを使用する関数とアクセス方法は、参照に変更する必要がありstaticます。

于 2013-07-19T20:21:42.383 に答える