在Fragment中无法解析方法“findViewById(int)”

3

我正在尝试将按钮实现到片段中,以便使用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);}
        });

请将返回放置在OnCreateView()的末尾。 - CAS
关于在Fragment中使用findViewById的问题。 - Blo
2个回答

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;
    }

你在这里犯了很多错误。所以我不确定我的方法是否足够帮助你) 将你的程序结果写入评论,我们会尝试更多。


2

你的代码中有多处错误。

  1. 你在代码中提前返回了一个值,导致在此之后的代码不再执行。

  2. 你正在inflate View,但是你所有的内部元素(例如按钮)都在这个View中,所以你必须通过该View中的id来查找它。

我已经纠正了它:

@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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接