Java 是否使用Edittext更改Textview的文本?

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

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

我想在Edittext中键入一些内容(它位于Activity extends AppCompatActivity中),如果单击save,该文本将显示在另一个Textview(位于另一个类extends 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);
    }
});
@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"));
        }
    }
}
并创建一个类级INSTANCE
MyBroadcastReceiver
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中膨胀的视图更改为类变量,并在广播中使用它。