安卓小白求助

guangyao3 2017-05-11 07:31:23
package com.example.guangyao123.mobileplayer2.acticity;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.RadioGroup;

import com.example.guangyao123.mobileplayer2.R;
import com.example.guangyao123.mobileplayer2.acticity.base.BasePager;
import com.example.guangyao123.mobileplayer2.acticity.pager.AudioPager;
import com.example.guangyao123.mobileplayer2.acticity.pager.NetAudioPager;
import com.example.guangyao123.mobileplayer2.acticity.pager.NetVideoPager;
import com.example.guangyao123.mobileplayer2.acticity.pager.VideoPager;

import java.util.ArrayList;

/**
* Created by guangyao123 on 2017/5/9.
*/
public class MainActivity extends FragmentActivity{
private FrameLayout fl_main_content;
private RadioGroup rg_bottom_tag;
private ArrayList<BasePager> basePagers;//页面集合
private int position;//选择位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fl_main_content=(FrameLayout) findViewById(R.id.fl_main_content);
rg_bottom_tag= (RadioGroup)findViewById(R.id.rg_bottom_tag);

basePagers = new ArrayList<>();
basePagers.add(new VideoPager(this));//添加本地视频界面0
basePagers.add(new AudioPager(this));//添加本地音乐界面1
basePagers.add(new NetVideoPager(this));//添加网上视频界面2
basePagers.add(new NetAudioPager(this));//添加网上音乐界面3
//设置VideoGroup的监听
rg_bottom_tag.setOnCheckedChangeListener(new MyOnCheckedChangeListener());
rg_bottom_tag.check(R.id.rb_video);//首页

}
class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
default:
position =0;
break;
case R.id.rb_audio:
position =1;
break;
case R.id.rb_net_video:
position =2;
break;
case R.id.rb_netaudio:
position =3;
break;
}
setFragment();

}
}
/**
* 把页面添加到Fragment
*/

private void setFragment(){
//1.得到FragmentManger
FragmentManager manager = getSupportFragmentManager();
//2.开启事物
FragmentTransaction ft = manager.beginTransaction();
//3.替换
] ft.replace.(R.id.fl_main_content,new Fragment(){
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
BasePager basePager = getBasePager();
if(basePager!=null) {
return basePager.rootView;
}
return null;

}
});
//4.提交事物
ft.commit();

}
private BasePager getBasePager(){
BasePager basePager=basePagers.get(position);
if (basePager !=null){
basePager.initData();//联网请求
}
return null;
}
}
跟网上学着写安卓影音播放器
语法没问题,但是运行出现E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.guangyao123.mobileplayer2, PID: 3816
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.guangyao123.mobileplayer2/com.example.guangyao123.mobileplayer2.acticity.MainActivity}: java.lang.IllegalStateException: Fragment null must be a public static class to be properly recreated from instance state.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2793)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6524)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
Caused by: java.lang.IllegalStateException: Fragment null must be a public static class to be properly recreated from instance state.
at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:384)
at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:369)
at com.example.guangyao123.mobileplayer2.acticity.MainActivity.setFragment(MainActivity.java:80)
at com.example.guangyao123.mobileplayer2.acticity.MainActivity.access$100(MainActivity.java:27)
at com.example.guangyao123.mobileplayer2.acticity.MainActivity$MyOnCheckedChangeListener.onCheckedChanged(MainActivity.java:66)
at android.widget.RadioGroup.setCheckedId(RadioGroup.java:173)
at android.widget.RadioGroup.-wrap0(RadioGroup.java)
at android.widget.RadioGroup$CheckedStateTracker.onCheckedChanged(RadioGroup.java:351)
at android.widget.CompoundButton.setChecked(CompoundButton.java:160)
at android.widget.RadioGroup.setCheckedStateForView(RadioGroup.java:180)
at android.widget.RadioGroup.check(RadioGroup.java:164)
at com.example.guangyao123.mobileplayer2.acticity.MainActivity.onCreate(MainActivity.java:46)
at android.app.Activity.performCreate(Activity.java:6910)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2746)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6524)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
出现这个问题不知道怎么解决,想求助一下大神解决方法,之前百度说把fragment的定义放到别的文件里,不要用匿名内部类的方式,但是怎么实现,具体方法是啥?求解决办法
...全文
200 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
guangyao3 2017-05-11
  • 打赏
  • 举报
回复
能具体点吗,我是安卓小白,麻烦了
YXTS122 2017-05-11
  • 打赏
  • 举报
回复
错误在MainActivity.java里的setFragment方法,第80行看下

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧