0

フラグメントアクティビティに入力されたときに、フラグメント内の値をリアルタイムで更新する必要があるプログラムがあります。スナップショットを以下に示します。

ここに画像の説明を入力してください

ここで、フラグメントアクティビティ(画像の上半分)に値を入力すると、AL、K1などのテキストフィールドを編集して、以下のフラグメントで回答を更新する必要があります。フラグメントにリアルタイムで値を送信するにはどうすればよいですか。私は初心者です私を助けてください

4

1 に答える 1

1

フラグメントを作成したクラスで、 というメソッドを作成しますpublic void updateText(String text)。このメソッドでは、渡された文字列を使用してフラグメント内の数値を計算するために必要なすべての計算などを実行し、すべての計算後に取得した文字列にテキストを設定します。でFragmentActivitytextChangedListenerを使用してクラス宣言にeditText1.addTextChangedListener(this)追加します。implements TextWatcherインポートとすべての未実装のメソッドを追加し、最近追加されたメソッドで、と言っonTextChangedてメソッドを呼び出します。ここで、fragment は、 にアタッチしたときに作成した Fragment オブジェクトです。これが役立つことを願っています!他に何か必要な場合はお知らせください。または、必要に応じてパラメータを追加または変更する方法を変更することもできます。updateText(String)fragment.updateText(String)FragmentActivity



updateText(String)

以下は、うまくいけば役立つ大まかな例です。

package com.smarticle.example;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class Example extends Activity implements TextWatcher {

ExampleFragment exampleFragment;
EditText editText1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    exampleFragment = new ExampleFragment();
    editText1 = (EditText) findViewById(R.id.editText1);
    editText1.addTextChangedListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    editText1.removeTextChangedListener(this);
}

public void afterTextChanged(Editable s) {
    // I don't implement this, but it is required.
}

public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    // I don't implement this, but it is required.
}

public void onTextChanged(CharSequence s, int start, int before, int count) {
    exampleFragment.updateText(editText1.getText().toString().trim());
}

public class ExampleFragment extends Fragment {

    public void updateText(String text) {
        // Perform any necessary calculations or actions
    }

}

}

于 2013-02-12T15:25:14.783 に答える