Изменить текст просмотра текста с помощью Edittext? - PullRequest
0 голосов
/ 12 марта 2020

Эй, как я могу это сделать в Android Studio?

Я хочу напечатать что-нибудь в Edittext (который он расположен в Activity расширяет AppCompatActivity), и если я нажму на Сохранить, этот текст будет быть показано в другом Textview (который находится в другом классе расширяет фрагменты)?

AccountActivity. java:

 @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_account);

final EditText editText = (EditText) findViewById(R.id.usernameedittext);
TextView save = (TextView) findViewById(R.id.profile_save);

save.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(AccountActivity.this, ProfileFragment.class);
        intent.putExtra("name", editText.getText().toString());
        startActivity(intent);
    }
});

ProfileFragment. java:

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_profile, container, false);


    final TextView username = (TextView) view.findViewById(R.id.profile_username);

    username.setText(getActivity().getIntent().getExtras().getString("name")) }

Ответы [ 3 ]

0 голосов
/ 12 марта 2020

Вы можете отправить широковещательную рассылку с данными об активности по методу нажатия кнопки «Сохранить» и получить эту широковещательную рассылку фрагментом, а также получить данные из намерения широковещательной передачи и показать их в представлении.

Редактировать. Ниже приведен пример отправки и получения трансляции.

Во-первых, в ProfileFragment. java, создайте класс трансляции как:

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("my_broadcast")){
            final TextView username = (TextView) view.findViewById(R.id.profile_username);
            username.setText(intent.getStringExtra("name"));
        }
    }
}

и создайте инстанс на уровне класса MyBroadcastReceiver как

MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();

, а также добавьте этот код

@Override
public void onResume() {
    super.onResume();
    getActivity().registerReceiver(myReceiver, new IntentFilter("my_broadcast"));
}

@Override
public void onPause() {
    super.onPause();
    getActivity().unregisterReceiver(myReceiver);
}

И, наконец, вы должны отправлять трансляцию, когда хотите обновить текст. Итак, в вашем AccountActivity.java классе обновите метод click до

save.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent broadcastIntent = new Intent();
                    broadcastIntent.setAction("my_broadcast");
                    broadcastIntent.putExtra("name", editText.getText().toString());
                    sendBroadcast(broadcastIntent);
    }
});

Надеюсь, это поможет. Удачи!

0 голосов
/ 12 марта 2020

Так же, как сказал @Massab. Вы можете отправить трансляцию из одного класса в другой. Вот ответ о том, как это сделать: Как отправить и получить широковещательное сообщение и ответить от android -студии: https://developer.android.com/guide/components/broadcasts

0 голосов
/ 12 марта 2020

Вы можете сделать textView переменной stati c и ссылаться на нее, а затем установить нулевое значение, если оно установлено для предотвращения утечки памяти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...