当前位置: 代码迷 >> Android >> fragment中 getActivity 报空指针解决方案
  详细解决方案

fragment中 getActivity 报空指针解决方案

热度:15   发布时间:2016-04-28 05:27:16.0
fragment中 getActivity 报空指针
如题,我在做用一个fragment中的按钮点击修改另一个fragment中的文本时,报空指针错误,发现,在点击事件中获取不到另一个fragment  求大神帮我看看是哪里的问题??
Fragment1的代码:
package com.example.fragmentdemo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
public class Fragment1 extends Fragment  {
private Button bt;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment1,null);
bt=(Button) view.findViewById(R.id.bt);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Fragment2 f2=(Fragment2) getActivity().getSupportFragmentManager().findFragmentById(R.layout.fragment2);
if(null!=f2){
System.out.println("f2不为空");
//f2.setText("内容变化了...");
}else {
System.out.println("f2为空");
}
//主要问题在这,这里应该能获得到f2,但得到的确是空。
}
});
return view;
}
}

Fragment2的代码:
package com.example.fragmentdemo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment2 extends Fragment {
private TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment2,null);
tv=(TextView) view.findViewById(R.id.tv);
return view;
}
public void setText(String text) {
tv.setText(text);
}
}

MainActivity的代码:
package com.example.fragmentdemo;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.LinearLayout;

public class MainActivity extends FragmentActivity {
private FragmentManager fm;
private FragmentTransaction ft;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fm=getSupportFragmentManager();
ft=fm.beginTransaction();
ft.replace(R.id.ll1,new Fragment1());
ft.replace(R.id.ll2,new Fragment2());
        ft.commit();
}
}


运行的结果显示f2为空!!!

------解决方案--------------------
mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager()
.findFragmentById(R.id.navigation_drawer)
这个是我的代码  你试试
  相关解决方案