一想到要重新做我脑壳就疼(并没有
fragment
https://www.jianshu.com/p/fd71d65f0ec6
https://blog.youkuaiyun.com/weixin_34232744/article/details/91934004
https://blog.youkuaiyun.com/guolin_blog/article/details/8881711
https://www.cnblogs.com/qianguyihao/p/3978989.html
现在有种儿子八个月大然后滑胎了的感觉,头疼
6月9日
新的一天旧的问题,我真的睡觉都梦到别人的APP咋样咋样。
挣扎了一个小时左右我终于开窍了哈哈哈我真是太蠢了,fragment就是fragment和activity没啥子关系,我咋能这么奇怪呢。
我还到处找这个问题怎么可能有嘛
果然早上脑子会好使一些
最近电脑总是蓝屏找dell的人问了一哈可能是软件的问题
刚才又闪退了不过日记没存下来
但是我已经改好了啊哈哈哈没想到我也可以改好空指针!
接下来还要搬三个activity到fragment 是个大工程啊
总结:
1.按钮点击要改成这样
song_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
2.this报错就先改成getActivity()试试
3.要看继承类
把控件的操作都放到fragment类里面了,但为啥还是点不了啊。
也可以在每个fragment只放一个按钮,跳转到activity里面(是个思路,先记下来,虽然是脱裤子放p的事)
我可真是太菜了,那个food界面咋就不好使了呢?咋回事呢?
存一下
package com.example.slhww.win;
import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.ExpandableListView;
import android.widget.Toast;
import com.example.slhww.win.R;
import java.util.ArrayList;
public class SportFragment extends Fragment implements View.OnClickListener,
Chronometer.OnChronometerTickListener{
public SportFragment() {
// Required empty public constructor
}
public Activity ma1;
private View layout;
//分组列表
private ArrayList<GroupBean> gData = null;
private ArrayList<ArrayList<SportBean>> iData = null;
private ArrayList<SportBean> lData = null;
private Context mContext;
private ExpandableListView lol_sport_list;
private MsExpandableListAdapter msAdapter = null;
//时间计时
private Chronometer chronometer;
private Button btn_start,btn_stop,btn_base,btn_format;
//音乐
private Button song_play;
private Button song_pause;
private Button song_stop;
private MediaPlayer mPlayer = null;
private boolean isRelease = true;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
if (layout == null){
Activity ma = this.getActivity();
layout = ma.getLayoutInflater().inflate(R.layout.fragment_sport,null);
bindViews();
mContext = getActivity();
lol_sport_list = (ExpandableListView) layout.findViewById(R.id.lol_sport_list);
gData = new ArrayList<GroupBean>();
iData = new ArrayList<ArrayList<SportBean>>();
gData.add(new GroupBean("有氧"));
gData.add(new GroupBean("无氧"));
lData = new ArrayList<SportBean>();
//有氧
lData.add(new SportBean(R.drawable.sp6,"跑步-500kal/h"));
lData.add(new SportBean(R.drawable.sp7,"动感单车-406lal/h"));
lData.add(new SportBean(R.drawable.sp8,"快走-225kal/h"));
lData.add(new SportBean(R.drawable.sp9,"跳绳-650kal/h"));
lData.add(new SportBean(R.drawable.sp10,"HITI-369kal/h"));
iData.add(lData);
//无氧
lData = new ArrayList<SportBean>();
lData.add(new SportBean(R.drawable.sp1, "平板支撑-469kal/h"));
lData.add(new SportBean(R.drawable.sp2, "卷腹-436kal/h"));
lData.add(new SportBean(R.drawable.sp3, "俯卧撑-503kal/h"));
lData.add(new SportBean(R.drawable.sp4, "仰卧起坐-402kal/h"));
lData.add(new SportBean(R.drawable.sp5, "深蹲-436kal/h"));
iData.add(lData);
msAdapter = new MsExpandableListAdapter(gData,iData,mContext);
lol_sport_list.setAdapter(msAdapter);
//为列表设置点击事件
lol_sport_list.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Toast.makeText(mContext, "你点击了:" + iData.get(groupPosition).get(childPosition).getName(), Toast.LENGTH_SHORT).show();
return true;
}
});
//时间
initView();
}
return inflater.inflate(R.layout.fragment_sport, container, false);
}
private void initView(){
chronometer = (Chronometer)layout.findViewById(R.id.hh_chr);
btn_start = (Button) layout.findViewById(R.id.btnStart);
btn_stop = (Button) layout.findViewById(R.id.btnStop);
btn_base = (Button) layout.findViewById(R.id.btnReset);
btn_format = (Button) layout.findViewById(R.id.btn_format);
chronometer.setOnChronometerTickListener((Chronometer.OnChronometerTickListener) this);
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btn_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btn_base.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
btn_format.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnStart:
chronometer.start();// 开始计时
break;
case R.id.btnStop:
chronometer.stop();// 停止计时
break;
case R.id.btnReset:
chronometer.setBase(SystemClock.elapsedRealtime());// 复位
break;
case R.id.btn_format:
chronometer.setFormat("Time:%s");// 更改时间显示格式
break;
}
switch (v.getId()){
case R.id.song_start:
if(isRelease){
mPlayer = MediaPlayer.create(getActivity(),com.example.slhww.win.R.raw.af);
isRelease = false;
}
mPlayer.start(); //开始播放
song_play.setEnabled(false);
song_pause.setEnabled(true);
btn_stop.setEnabled(true);
break;
case R.id.song_pause:
mPlayer.pause(); //停止播放
song_play.setEnabled(true);
song_pause.setEnabled(false);
song_stop.setEnabled(false);
break;
case R.id.song_stop:
mPlayer.reset(); //重置MediaPlayer
mPlayer.release(); //释放MediaPlayer
isRelease = true;
song_play.setEnabled(true);
song_pause.setEnabled(false);
song_stop.setEnabled(false);
break;
}
}
@Override
public void onChronometerTick(Chronometer chronometer) {
String time = chronometer.getText().toString();
if(time.equals("00:00")){
Toast.makeText(getActivity(),"时间到了~",Toast.LENGTH_SHORT).show();
}
}
private void bindViews(){
song_play = (Button) layout.findViewById(R.id.song_start);
song_pause = (Button) layout.findViewById(R.id.song_pause);
song_stop = (Button) layout.findViewById(R.id.song_stop);
song_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
song_pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
song_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
两个废了很大功夫改好的代码竟然没用上,害(日记这个可以考虑用上)
package com.example.slhww.win;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatDialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import com.example.slhww.win.Activity4;
import com.example.slhww.win.DBService;
import com.example.slhww.win.Edit_Activity;
import com.example.slhww.win.R;
import com.example.slhww.win.ShowActivity;
import com.example.slhww.win.Values;
import java.util.ArrayList;
import java.util.List;
public class DiaryFragment extends Fragment {
public DiaryFragment() {
// Required empty public constructor
}
DBService myDb;
private Button mBtnAdd;
private ListView lv_note;
public Activity ma;
private View layout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// super.onActivityCreated(savedInstanceState);
if (layout == null) {
Activity ma = this.getActivity();
layout = ma.getLayoutInflater().inflate(R.layout.fragment_diary, null);
// Inflate the layout for this fragment
// return inflater.inflate(R.layout.fragment_diary, container, false);
//实例化数据库
myDb = new DBService(ma);
init();
}else {
View layout = inflater.inflate(R.layout.fragment_diary, container, false);
}
return layout;
}
public void init(){
mBtnAdd = layout.findViewById(R.id.btn_add);
lv_note = layout.findViewById(R.id.lv_note);
List<Values> valuesList = new ArrayList<>();
SQLiteDatabase db = myDb.getReadableDatabase();
Cursor cursor = db.query(DBService.TABLE,null,null,null,
null,null,null);
if (cursor.moveToFirst()){
Values values;
while (!cursor.isAfterLast()){
//实例化valuse对象
values = new Values();
values.setId(Integer.valueOf(cursor.getString(cursor.getColumnIndex(DBService.ID))));
values.setTitle(cursor.getString(cursor.getColumnIndex(DBService.TITLE)));
values.setContent(cursor.getString(cursor.getColumnIndex(DBService.CONTENT)));
values.setTime(cursor.getString(cursor.getColumnIndex(DBService.TIME)));
//将values对象存入list对象数组中
valuesList.add(values);
cursor.moveToNext();
}
}
cursor.close();
db.close();
//设置list组件
final MyBaseAdapter myBaseAdapter = new MyBaseAdapter(valuesList,getActivity(),R.layout.diary_item);
//按钮点击事件
mBtnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), Edit_Activity.class);
startActivity(intent);
}
});
//单击查询
lv_note.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity(),ShowActivity.class);
Values values = (Values) lv_note.getItemAtPosition(position);
intent.putExtra(DBService.TITLE,values.getTitle().trim());
intent.putExtra(DBService.CONTENT,values.getContent().trim());
intent.putExtra(DBService.TIME,values.getTime().trim());
intent.putExtra(DBService.ID,values.getId().toString().trim());
startActivity(intent);
}
});
//长按删除
lv_note.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
final Values values = (Values) lv_note.getItemAtPosition(position);
new AlertDialog.Builder(getActivity())
.setTitle("提示框")
.setMessage("是否删除?")
.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SQLiteDatabase db = myDb.getWritableDatabase();
db.delete(DBService.TABLE,DBService.ID+"=?",new String[]{String.valueOf(values.getId())});
db.close();
myBaseAdapter.removeItem(position);
lv_note.post(new Runnable() {
@Override
public void run() {
myBaseAdapter.notifyDataSetChanged();
}
});
//MainActivity.this.onResume();
}
})
.setNegativeButton("no",null).show();
return true;
}
});
}
//创建继承自BaseAdapter的实现类进行ListView的展示
class MyBaseAdapter extends BaseAdapter {
private List<Values> valuesList;
private Context context;
private int layoutId;
public MyBaseAdapter(List<Values> valuesList, Context context, int layoutId) {
this.valuesList = valuesList;
this.context = context;
this.layoutId = layoutId;
}
@Override
public int getCount() {
if (valuesList != null && valuesList.size() > 0)
return valuesList.size();
else
return 0;
}
@Override
public Object getItem(int position) {
if (valuesList != null && valuesList.size() > 0)
return valuesList.get(position);
else
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(
getActivity().getApplicationContext()).inflate(R.layout.diary_item, parent,
false);
viewHolder = new ViewHolder();
viewHolder.title = (TextView) convertView.findViewById(R.id.tv_title);
viewHolder.content = convertView.findViewById(R.id.tv_content);
viewHolder.time = (TextView) convertView.findViewById(R.id.tv_time);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
String title = valuesList.get(position).getTitle();
String content = valuesList.get(position).getContent();
viewHolder.title.setText(title);
viewHolder.content.setText(content);
viewHolder.time.setText(valuesList.get(position).getTime());
return convertView;
}
public void removeItem(int position){
this.valuesList.remove(position);
}
}
class ViewHolder{
TextView title;
TextView content;
TextView time;
}
}
好了,现在用我不咋聪明的方法解决了从周日到现在的问题。
剩下的问题:
- food页面显示不出来动态fragment
- 日记本保存之后回到了home页
- food的搭配没写呢
- 每个界面一开始放的东西得找找
- home现在跳到的是薄荷主页要找找更好的
- app图标和欢迎界面
6.日晚七点半总结:主要搞好前两个大问题明天去买圣代吃。
考完试吃小龙虾烤肉火锅!!!
新问题:
- 日记本不
安卓教我做人系列-少了一行我找了一晚上加一个早上
是我蠢是我蠢
10日打卡,现在连到了手机上,打不开网址
- 音乐换卡路里
- 首页放表情包
- 颜色白色(试过了,不好看
- 日记上面放代办
18号要把实验报告写完!
没错今天就是18号,昨天刚考完两科,明天就要交这个作业辣
然鹅我现在在大改第四个界面啊哈哈哈哈哈我真棒
打算加个刮刮卡在最上面
然后下面是点击按钮出照片
- 刮刮卡(pass)
- 按钮及图片
- HOME页下部(滑胎)
- 欢迎页整改
- 实验报告
android studio的预览和模拟器和真机细节上都不一样,绝啦。
结束啦,总之还算可以虽然简单但是完整。
不过展示的时候有点着急,没太说明白,害。
啥时候“类似面试就紧张”的毛病能改改哇
下次再见啦Android studio