开发者社区> 问答> 正文

使用Edittext更改Textview的文本?

嘿,我该如何在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")) }
```

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 22:31:58 465 0
1 条回答
写回答
取消 提交回答
  • 您可以使用保存按钮单击方法从活动中发送带有数据的广播,并分段接收该广播,并从广播意图中获取数据并将其显示在视图中。

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

    首先,在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"));
            }
        }
    }```
    创造的一流水平insatance 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);
        }
    });```
    希望这可以帮助。祝好运!
    
    回答来源:Stack Overflow
    2020-03-27 22:32:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载