Android 将活动转换为片段
这是一个简单的代码,可以在单击Android 将活动转换为片段,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,这是一个简单的代码,可以在单击按钮时播放声音,该代码最初是在活动中编写的,但现在我想将其更改为片段 错误 1) Rajathmusic类型的方法setContentView(int)未定义 2) MediaPlayer类型中的方法create(Context,int)不适用于参数(Rajathmusic,int) 3) Rajathmusic类型的方法findViewById(int)未定义 我刚刚开始android开发,任何帮助都将不胜感激 public class Rajathmusic e
按钮时播放声音,该代码最初是在活动中编写的,但现在我想将其更改为片段
错误
1) Rajathmusic类型的方法setContentView(int)
未定义
2) MediaPlayer类型中的方法create(Context,int)
不适用于参数(Rajathmusic,int)
3) Rajathmusic类型的方法findViewById(int)
未定义
我刚刚开始android开发,任何帮助都将不胜感激
public class Rajathmusic extends Fragment {
private static final String TAG = "MyActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.v(TAG, "Initializing sounds...");
final MediaPlayer mp = MediaPlayer.create(this, R.raw.rajath);
Button play_button = (Button)this.findViewById(R.id.button3);
play_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.v(TAG, "Playing sound...");
mp.start();
}
});
Log.v(TAG, "Sounds initialized.");
}}
在重写的activitycreated(…)方法OnActivityCreated(…)
中使用此代码,并使用getActivity()
,而不是this,因为新片段不再是activity
Fragment
有一个名为onCreateView(LayoutInflater、ViewGroup、Bundle)的方法
。覆盖它,使用布局充气并返回视图
因为create方法需要一个上下文
,所以使用getActivity()
findViewById(int)
可以称为getView().findViewById(R.id.button3)
下面是一个示例代码:
public class Rajathmusic extends Fragment {
private static final String TAG = "MyActivity";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_main, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
Log.v(TAG, "Initializing sounds...");
final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.rajath);
View v = getView();
Button play_button = (Button) v.findViewById(R.id.button3);
play_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.v(TAG, "Playing sound...");
mp.start();
}
});
Log.v(TAG, "Sounds initialized.");
}
}
阅读有关Fragment
生命周期的更多信息,了解为什么我将代码放在onActivityCreated
中,而不是onCreate
中的Fragment onCreate方法通常编写为-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
和使用-
final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.rajath);
Button play_button = (Button) view.findViewById(R.id.button3);
如果您想了解更多有关碎片的信息 从活动的onCreate()
方法复制代码,并将其粘贴到片段的onCreateView()
方法中
要修复错误,请传递getActivity
以代替此关键字,并使用getView().findViewById()
super.onCreate(savedInstanceState);在此之后,在ActivityCreated(Bundle savedInstanceState)上创建了一个公共void{