java - 使用 Edittext 更改 Textview 的文本?

标签 java android android-studio

嘿,我怎样才能在 Android Studio 中做到这一点?

我想在 Edittext 中输入一些内容(位于 Activity 扩展 AppCompatActivity 中),如果我单击“保存”,该文本将显示在另一个 Textview 上(位于另一个扩展 Fragments 的类中)?

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")) }

最佳答案

您可以在保存按钮单击方法上发送包含来自 Activity 的数据的广播,并在 fragment 中接收该广播,并从广播 Intent 中获取数据并将其显示在 View 中。

编辑:请查找以下发送和接收广播的示例。

首先,在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);
    }
});

希望这有帮助。祝你好运!

关于java - 使用 Edittext 更改 Textview 的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60660359/

相关文章:

java - 逻辑运算符在 SpEL 中未按预期工作

Android:停止将应用程序带入前台的新 Activity

android - Android 移动应用程序的基于兴趣和位置的算法

Android - 重复条目错误 - 当一个 JAR 文件中的一个类存在于两个 JAR 文件中时,如何使用它而不会遇到此错误?

android-studio - Android Studio :disable "never used" warning on methods that I want to use later

Android studio 布局设计 View 未加载

java - 将参数传递给 ViewScoped Bean

java - GraphStream 中的 setAttribute

java - 如何使用 Java 将文档上传到 SharePoint?

java - Android TextInput 提示文本颜色