簡體   English   中英

使用 Edittext 更改 Textview 的文本?

[英]Change the Text of a Textview with Edittext?

嘿,我如何在 Android Studio 中做到這一點?

我想在 Edittext 中鍵入一些內容(它位於 Activity 中的擴展 AppCompatActivity 中),如果我單擊保存,此文本將顯示在另一個 Textview(位於另一個類中的 extends Fragments 中)?

賬戶活動.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")) }

您可以將 textView 設為靜態變量並引用它,然后在設置它時將該值設為 null 以防止內存泄漏

您可以通過保存按鈕單擊方法發送帶有活動數據的廣播,並在片段中接收該廣播,並從廣播的意圖中獲取數據並將其顯示在視圖中。

編輯:請在下面找到發送和接收廣播的示例。

首先,在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作為

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

希望這可以幫助。 祝你好運!

就像@Massab 所說的那樣。 您可以將廣播從一個班級發送到另一個班級。 這是關於如何做的答案: 如何從android-studio 發送和接收廣播消息和回答: https : //developer.android.com/guide/components/broadcasts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM