gpt4 book ai didi

java - 为来自另一个 fragment onClick 事件的 fragment 中的 TextView 设置文本

转载 作者:行者123 更新时间:2023-11-29 09:26:48 26 4
gpt4 key购买 nike

我是新来的,所以请多多包涵。

我试图通过 fragment 的 onClick 方法在 TextView 中设置文本,但我不断收到此错误:

Non-static field 'textView' cannot be referenced from a static context

我尝试过的所有方法都没有用,所以我正在寻求帮助。

我有一个带有按钮的 fragment ,我想用它来设置 textView 的文本:

PullFragment.java

public class PullFragment extends Fragment implements View.OnClickListener {

public PullFragment() {
// Required empty public constructor
}

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_pull, container, false);

//The button
ImageButton toolbarButtonPull;
toolbarButtonPull = view.findViewById(R.id.toolbarButtonPull);
toolbarButtonPull.setOnClickListener(this);

return view;
}

@Override
public void onClick (View v) {
switch (v.getId()) {
case R.id.toolbarButtonPull:
// Here is the button onClick event
break;
}
}
}

这是另一个具有 textView 的 fragment :

PlaceholderFragment.java

public class PlaceholderFragment extends Fragment {

public TextView textView;

public PlaceholderFragment() {}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab_pull, container, false);
// Here is the textView I want to change
textView = rootView.findViewById(R.id.textView);
return rootView;
}
}

我在 onClick 事件中尝试了以下操作:

PlaceholderFragment.textView.setText("Test");

//Or trying to call public void Test which just does "textView.setText("Text");"

PlaceholderFragment.Test();

Non-static field 'textView' cannot be referenced from a static context

PlaceholderFragment placeholderFragment = new PlaceholderFragment();
placeholderFragment.textView.setText("Text");

//Or trying to call public void Test which just does "textView.setText("Text");"

PlaceholderFragment placeholderFragment = new PlaceholderFragment();
placeholderFragment.Test();

Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference

也许我遗漏了一些简单的东西,但我在这方面没有取得任何进展。

最佳答案

Google 建议使用接口(interface)在 fragment 之间进行通信,请参阅文档:https://developer.android.com/training/basics/fragments/communicating

另外,我认为this是一个很好的教程,使用 Activity 的共享 ViewModel 在 fragment 之间传输数据。

关于java - 为来自另一个 fragment onClick 事件的 fragment 中的 TextView 设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55165584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com