对于从片段中启动YoutubePlayerView感到困惑

时间:2015-10-12 14:25:00

标签: android android-fragments android-intent onclicklistener

我正尝试通过单击按钮从片段启动youtubeplayer视图。

我收到的错误确实让我头疼了......

现在 - 我尝试过这种方法: 我单独想要启动YouTubePlayer View。 2.从片段我试图调用新意图(在#1中提到)从Button启动YouTubeplayerView 3.在片段中放置一个按钮

我的问题是我收到一个关于使用我编写的代码调用空引用的错误。

应用程序编译正常(应用程序的基础是基于导航抽屉的应用程序,因此每个选择产生一个片段)。但是当我选择带有上述编码方法的选项时,会出现此错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
            at blackstone.software.sunnahboxtvmenu.AlNabawiFragment.onCreate(AlNabawiFragment.java:62).

它指出这行代码是问题的根源:

btnNabawiLive = (Button) getView().findViewById(R.id.btnNabawiLive);

这里是片段代码:

public class AlNabawiFragment extends Fragment implements View.OnClickListener {

    public AlNabawiFragment(){}

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

        View rootView = inflater.inflate(R.layout.fragment_al_nabawi, container, false);

        TextView text = (TextView) rootView.findViewById(R.id.nababwitext);
        //text.setText("your text!");

        InputStream is = getResources().openRawResource(R.raw.nabawi);
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line;
        String entireFile = "";
        try {
            while((line = br.readLine()) != null) { // <--------- place readLine() inside loop
                entireFile += (line + "\n"); // <---------- add each line to entireFile

            }
        }

        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        //TextView text = null;
        //text.setText(entireFile); // <------- assign entireFile to TextView
        //assert text != null;
        if (text != null) {
            text.setText(entireFile);
        }

        return rootView;
    }

    Button btnNabawiLive;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.fragment_al_nabawi);

        btnNabawiLive = (Button) getView().findViewById(R.id.btnNabawiLive);
        btnNabawiLive.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {

        //Intent inent = new Intent(this, NabawiVideo.class);
        Intent inent = new Intent(getActivity(), NabawiVideo.class);

        // calling an activity using <intent-filter> action name
        //  Intent inent = new Intent("com.hmkcode.android.ANOTHER_ACTIVITY");

        startActivity(inent);
    }


    /* public void onClick (View v) {

        Intent intent = new Intent(getActivity(), NabawiVideo.class);
        startActivity(intent);

    } */

}

现在......我感到困惑的是: 1.我在哪里延长YouTube播放器课程? 2.在何处以及如何调用onclicklistener按钮以启动调用youtubeplayerView的其他意图?

感谢。

ironmantis7x

1 个答案:

答案 0 :(得分:1)

如果您查看fragment's life cycle,则会在onCreate之前看到onCreateView被调用,因此getView()将返回null。< / p>

而是将代码从onCreate移至onCreateView并使用rootView而不是getView()