Как обновить фрагмент TextView из Activity? - PullRequest
0 голосов
/ 29 марта 2019

Если у меня есть функция, которая время от времени получает разные значения, и, используя фрагмент в качестве дисплея, я бы хотела обновить TextView внутри фрагмента при изменении значения, как я могу манипулировать TextView из фрагментавнутри MainActivity?

Чтобы уточнить больше:

My MainActivity соответствует значению в DatabaseReference следующим образом:

userLoggedInRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            if (!dataSnapshot.child("office").getValue(String.class).equals("none")) {
                officeKeyLoggedIn = dataSnapshot.child("office").getValue(String.class);
                usersInOffice.child(officeKeyLoggedIn).child(userKey).setValue("").addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()){
                            /new-code/
                        }
                    }
                });
            }
        ...

Итак, вот условие, когда пользователь входит в офиси значение меняется с «none» на «/ officeKey /», и в этот момент я хочу вызвать «/ new-code /» фрагмент, который является отображением MainActivity, чтобы установить видимость скрытого TextView вVISIBLE и задайте в нем текст, информирующий пользователя о том, что он сейчас вошел в систему.

Как мне этого добиться?

EDIT1: MainActivity InicioFragment

1 Ответ

0 голосов
/ 29 марта 2019

В вашей деятельности

Вы должны инициализировать этот фрагмент (например, как поле):

public class MainActivity extends AppCompatActivity {

    // Instance of our fragment
    OwnFragment fragment = new OwnFragment();

}

Не забудьте использовать именно этот экземпляр для транзакции(используя FragmentManager)

Во фрагменте:

Далее в своем фрагменте вы можете создать новый метод для получения данных:

public class OwnFragment extends Fragment {

    // So you can pass there: View.VISIBLE, View.GONE or View.INVISIBLE
    void setVisibility(int visibility) {
        textView.setVisibility(visibility);
    }

    // Your new method
    void setNewText(String text) {
        textView.setText(text);
    }

}

Снова в Activity:

Вы можете просто вызвать этот метод, используя приведенный выше экземпляр фрагмента:

fragment.setNewText("Hello world");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...