Java 是否使用Edittext更改Textview的文本?
嘿,我怎样才能在Android Studio中做到这一点 我想在Edittext中键入一些内容(它位于Activity extends AppCompatActivity中),如果单击save,该文本将显示在另一个Textview(位于另一个类extends Fragments中)中 AccountActivity.java:Java 是否使用Edittext更改Textview的文本?,java,android,android-studio,Java,Android,Android Studio,嘿,我怎样才能在Android Studio中做到这一点 我想在Edittext中键入一些内容(它位于Activity extends AppCompatActivity中),如果单击save,该文本将显示在另一个Textview(位于另一个类extends Fragments中)中 AccountActivity.java: @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.o
@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);
}
});
@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")) }
ProfileFragment.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);
}
});
@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")) }
您可以将textView设置为静态变量并引用它,然后在设置为防止内存泄漏时将该值设为空您可以通过保存按钮单击方法上的“活动”发送带有数据的广播,并以片段形式接收该广播,从广播目的获取数据并在视图中显示 编辑:请查找以下发送和接收广播的示例 首先,在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"));
}
}
}
并创建一个类级INSTANCEMyBroadcastReceiver
as
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
类中,更新您单击的方法
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);
}
});
希望这有帮助。祝你好运 就像@Massab说的那样。您可以将广播从一个类发送到另一个类。 以下是如何做到这一点的答案: 安卓工作室的回答是:
看看这个:嘿,我该如何编写代码?我是一个初学者,我不知道它是如何工作的:哎呀,很抱歉回答得太晚了。这个代码对我不起作用。最终TextView用户名=(TextView)view.findViewById(R.id.profile\u用户名);在这条线上。“视图”总是有问题的。始终是这个错误“错误:找不到符号变量视图”@FloFlo您需要做一些更改,请将片段的
onCreateView
中的视图变量设置为全局类变量。我这样做是否也正确?最终文本视图用户名=(文本视图)((活动)上下文).findViewById(R.id.profile_用户名);但如果我这样做,文本视图不会改变,如果我在EdittextNo中键入一些内容,这将不起作用,因为您正在引用父活动的上下文来查找视图,但您必须做的是,使用片段视图在该视图中调用findViewById。因此,只需将在onCreateView中膨胀的视图更改为类变量,并在广播中使用它。