Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将数据从活动传递到片段空指针异常_Android_Eclipse_Nullpointerexception_Fragment - Fatal编程技术网

Android 将数据从活动传递到片段空指针异常

Android 将数据从活动传递到片段空指针异常,android,eclipse,nullpointerexception,fragment,Android,Eclipse,Nullpointerexception,Fragment,我正在编写这个应用程序,其中一个字符串必须从活动传递到片段,但我得到一个nullpointerexception,下面是我的代码: 接口: public interface FragmentCommunicator { public void passDataToFragment(String value); } 片段代码: public class YouWinFragment extends Fragment implements FragmentCommunicato

我正在编写这个应用程序,其中一个字符串必须从活动传递到片段,但我得到一个nullpointerexception,下面是我的代码:

接口:

public interface FragmentCommunicator {

    public void passDataToFragment(String value);

}    
片段代码:

public class YouWinFragment extends Fragment implements FragmentCommunicator {

    TextView score;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        return inflater.inflate(R.layout.fragment_youwin, container,false);
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        score = (TextView) getActivity().findViewById(R.id.score_win);
    }

    @Override
    public void passDataToFragment(String value) {
        // TODO Auto-generated method stub
        score.setText(value);
    }
}
主要活动:

public class MainActivity extends ActionBarActivity{

    Button youWin;  
    String theCounter;
    YouWinFragment youWinFrag;

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

        youWin = (Button) findViewById(R.id.button_youwin);
        youWin.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                FragmentManager fm=getFragmentManager();
                FragmentTransaction ft=fm.beginTransaction();   
                ft.add(R.id.fragment_endgame,youWinFrag );
                ft.commit();

            }
        }); 
        youWinFrag.passDataToFragment("your score is 20");
    }
}
  • 你能发布日志吗?这样我们就知道空指针异常发生在哪里了

  • 您可以查看如何在片段上使用

  • 因此,在你的主要活动中,你会有如下内容:

    Bundle bundle = new Bundle();
    bundle.putString("STRING_KEY", "your score is 20");
    mYouWinFrag = new YouWinFragment();
    mYouWinFrag.setArguments(bundle);
    
    现在,在YouWinFragment中,您将拥有:

    String score = getArguments().getString("STRING_KEY");
    // Optionally, you can have a default value by using getArguments().getString("STRING_KEY", "A default value if the key isn't set");
    

    请查看developer.android.com上培训部分的文章。有一篇文章讨论了您正在尝试做的事情:

    在本文中,有一节称为:

    向片段传递消息

    这篇文章应该提供你所需要的

    另外,您实现的接口是android API的一部分吗?因为我看不到。所以,我假设这是您创建的一个接口。如果是这种情况,您应该阅读上面的整篇文章,以了解片段如何相互通信、活动以及活动如何与片段通信

    我也没有在片段或活动API中看到方法passDataToFragment。所以,我假设这是您添加的一种方法。如果是这种情况,则不需要@Override注释,因为类(活动或片段)中没有要重写的方法

    我希望这有帮助


    道格

    你能把堆栈跟踪添加到你的问题中吗?