gpt4 book ai didi

java - FindFragmentByTag 返回 null。

转载 作者:行者123 更新时间:2023-12-01 10:20:06 25 4
gpt4 key购买 nike

我只是一个android开发的初学者,最近我在developer.android.com上开始了Android教程。一切看起来都很好,直到现在。我正在做这门类(class)http://developer.android.com/training/basics/fragments/communicating.html ,我被困住了。我对其进行了一些更改,因为我想要更大的灵 active ,所以我将 fragment 添加到运行时。我花了大约一个小时寻找答案,但找不到解决我的问题的任何解决方案。 :(

这是我的问题:我想像教程中一样与我的 fragment 进行通信,但我使用 findFragmentByTag,而不是 findFragmentById。我已经做了我能在互联网上找到的所有事情,但它说:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.filip.t1/com.example.filip.t1.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

这是我的主要 Activity :

public class MainActivity extends FragmentActivity
implements TextFragment.OnHeadlineSelectedListener{

EditText editText;
TextFragment fragment = new TextFragment();
Context context = this;
String fragment_tag = "FRAGMENTO";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

getSupportFragmentManager().beginTransaction().add(R.id.frameLayout, fragment, fragment_tag).commit();
getSupportFragmentManager().executePendingTransactions();

onArticleSelected(1);
}


@Override
public void onArticleSelected(int position) {

TextFragment textFragment = (TextFragment) getSupportFragmentManager().findFragmentByTag(fragment_tag);

if(textFragment != null){
String strung = "It should be displayed, but it is not... :(";
textFragment.updateText(strung);
}else{
Log.e("tag_prog","textFragment == null");
}
}

和 fragment :

public class TextFragment extends Fragment {

TextView textView;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_text, container, false);
textView = (TextView)rootView.findViewById(R.id.textView);
return rootView;
}

OnHeadlineSelectedListener mCallBack;

public interface OnHeadlineSelectedListener {
public void onArticleSelected(int position);
}

@Override
public void onResume(){
super.onResume();
}

public void onAttach(Activity activity){
super.onAttach(activity);

try{
mCallBack = (OnHeadlineSelectedListener) activity;
} catch(ClassCastException e) {
throw new ClassCastException(activity.toString() + "must implement OHSL");
}
}

public void funkcja(){

}

public void updateText(String s) {
textView.setText(s);
}

感谢您的任何

最佳答案

问题是您在 Activity 的 onCreate() 中调用 onArticleSelected(1) 。这发生在调用 Fragment 的 onCreateView() 之前。因此此时textView仍然为null。

尝试在 Activity 的 onResume() 中调用 onArticleSelected(1)

查看 Activity 和 Fragment 的生命周期 here

关于java - FindFragmentByTag 返回 null。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651473/

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