2017-04-11 169 views
0

简单的问题,为什么发生这种情况?无法解析符号(字符串)

import android.media.MediaPlayer; 
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.Button; 

import com.maxiesnax.gavinisms2.gavinisms2.R; 



public class GavinFragment extends Fragment { 
; 



@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_gavin, container, 
false); 



    // Inflate the layout for this fragment 
    return rootView; 

    final MediaPlayer aahMP = MediaPlayer.create(getActivity(), R.raw.aaah); 

    Button play_aaah = (Button) getActivity().findViewById(R.id.play_ahhh); 

    play_aaah.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      aahMP.start(); 
     } 
    }); 

} 


} 

这是我的包含aah.mp3按钮的Fragment的代码。错误发生在

(R.id.play_ahhh); 

特别是play_ahhh,它已经在XML中定义了。

<resources> 
<string name="app_name">Gavinisms</string> 

<string name="navigation_drawer_open">Open navigation drawer</string> 
<string name="navigation_drawer_close">Close navigation drawer</string> 

<string name="action_settings">Settings</string> 

<string name="play_ahhh">Ahhh"</string> 
<!-- TODO: Remove or change this placeholder text --> 
<string name="hello_blank_fragment">Hello blank fragment</string> 
</resources> 
+0

'play_ahhh',就像你定义的那样,它将在'R.string'中,而不是'R.id'。这就是为什么你得到“无法解析符号”错误。但是您没有在您设置的文本中找到“视图”。你可以通过他们的ID找到他们;即,您在布局中设置的'android:id'属性的值。 –

回答

0

更改

<string name="play_ahhh">Ahhh"</string> 

<string name="play_ahhh">Ahhh</string> 

你也应该使用片段rootView

Button play_aaah = (Button) rootView.findViewById(R.id.play_ahhh); 
return rootView; 
0

在下面一行除去双引号内的文字,

<string name="play_ahhh">Ahhh"</string 

更改为,

<string name="play_ahhh">Ahhh</string 
0
<string name="play_ahhh">Ahhh</string> 

我也找到代码中一个可能的错误...

// Inflate the layout for this fragment 
return rootView; 

移动此行onCreateView()函数的底部。它不会在return语句后执行代码。我还会建议你阅读一些java相关书籍,比如“用Java思考”。