Android在Fragment中设置TextView的文本 - Fragment可能已经挂载

时间:2016-06-15 02:22:41

标签: android android-fragments

在我的Android应用程序中,我希望根据另一个片段中的按钮按下热切换片段中的文本。

Buttons片段有6个按钮,每个按钮都需要调用一个已配置的输出片段视图,这样当" BUtton 1"在按钮中按下,TextView myText被配置为说"按下按钮1"等等,2 - 6。

我已尝试在onViewCreated中实例化TextView的成员版本,以及其他一些策略,但我似乎无法让它崩溃。

这是否有既定的模式?

//MainActivity Java
public class MainActivity extends AppCompatActivity
implements StringsFragment.OnStringsInteractionListener,
        StringFragment.OnStringInteractionListener,
        ProgressFragment.OnProgressInteractionListener {

@Override
public void onStringButtonClick(Integer string) {
    fm = getSupportFragmentManager();
    fm.beginTransaction().remove(progressFragment).commit();

    if(liveStringFlag != true) {
        liveStringFlag = true;
        fm.beginTransaction().add(R.id.fragment_container_bottom, stringFragment).commit();
        stringsFragment.activateSummary();
    }

    stringFragment.updateStringData(string);
}

stringFragment.updateString需要看起来是什么样的,还有什么需要让它起作用?

1 个答案:

答案 0 :(得分:0)

对于这种情况,目前还不清楚的是,知道何时调用onViewCreated有时很棘手。实际上,这是竞争条件,可以首先调用更新方法或onViewCreated。因此,谨慎管理国家非常重要。

Public Class stringFragment extends Fragment {
  private TextView textString;
  private Boolean viewable = false;
  private String string = ""; 

  @Override
  public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
        textString = (TextView) view.findViewById(R.id.text_string);
    if(string != null) {
        textString.setText(string);
    }

    viewable = true;

  }

  public void updateStringData(String s ) {
    string = s;

    if(viewable == true) {
        textString.setText(string);
    }
  }
}