无法解决方法' findViewById(int)'在片段中

时间:2015-03-11 12:25:58

标签: android android-fragments findviewbyid

我正在尝试将一个按钮实现为一个片段,以便使用soundPool以便用按钮播放声音。目前playSound1从未使用过,我试图实现onClick方法,但现在它正在说它无法解决方法。如何将soundPool链接到片段中的按钮?这是.java文件

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Clubb1 = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
        clubb1Id = Clubb1.load(getActivity(), R.raw.clubb1, 1);

        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.fragment_one_layout, container, false);

        Button buttonA = (Button) findViewById(R.id.buttonA);

        buttonA.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

            }

            public void playSound1()
            {Clubb1.play(clubb1Id,1,1,1,0,1);}
        });

2 个答案:

答案 0 :(得分:3)

将您的方法更改为:

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Clubb1 = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
        clubb1Id = Clubb1.load(getActivity(), R.raw.clubb1, 1);

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

        Button buttonA = (Button) rootView.findViewById(R.id.buttonA);

        buttonA.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Clubb1.play(clubb1Id, 1, 1, 1, 0, 1);
            }

        });

        return veiw;
    }

你在这里犯了很多错误。所以我不确定我的方法对你有多大帮助。把你的程序结果写成评论,我们会尝试更多。

答案 1 :(得分:2)

您的代码中存在多个错误。

  1. 您将值返回到早期,不会执行返回语句之外的代码

  2. 您正在给视图充气,但所有内部元素(例如您的按钮)都在该视图中,因此您必须在该视图中按ID查找该视图。

  3. 我纠正了它:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View root = inflater.inflate(R.layout.fragment_one_layout, container, false);
            Clubb1 = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
            clubb1Id = Clubb1.load(getActivity(), R.raw.clubb1, 1);
    
            Button buttonA = (Button) root.findViewById(R.id.buttonA);
    
            buttonA.setOnClickListener(new View.OnClickListener() {
    
                public void onClick(View v) {
    
                }
    
                public void playSound1()
                {Clubb1.play(clubb1Id,1,1,1,0,1);}
            });
    
           return root;
    }