嘿,我该如何在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
您可以使用保存按钮单击方法从活动中发送带有数据的广播,并分段接收该广播,并从广播意图中获取数据并将其显示在视图中。
编辑:请找到以下发送和接收广播的示例。
首先,在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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。