网络判断+Fragment+ViewPager+XListView+TabLayout横向滑动菜单 Z2

activity_main

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RadioGroup
    android:id="@+id/radio_group"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="40dp">

    <RadioButton
        android:id="@+id/radio_01"
        android:padding="10dp"
        android:button="@null"
        android:gravity="center"
        android:checked="true"
        android:text="首页"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:background="@drawable/radiobutton_selector"/>
    <RadioButton
        android:id="@+id/radio_02"
        android:padding="10dp"
        android:button="@null"
        android:gravity="center"
        android:text="想法"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:background="@drawable/radiobutton_selector"/>
    <RadioButton
        android:id="@+id/radio_03"
        android:padding="10dp"
        android:button="@null"
        android:gravity="center"
        android:text="市场"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:background="@drawable/radiobutton_selector"/>
    <RadioButton
        android:id="@+id/radio_04"
        android:padding="10dp"
        android:button="@null"
        android:gravity="center"
        android:text="通知"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:background="@drawable/radiobutton_selector"/>
    <RadioButton
        android:id="@+id/radio_05"
        android:padding="10dp"
        android:button="@null"
        android:gravity="center"
        android:text="更多"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        android:background="@drawable/radiobutton_selector"/>

</RadioGroup>


<FrameLayout
    android:layout_above="@+id/radio_group"
    android:id="@+id/frame_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</FrameLayout>

</RelativeLayout>

content

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<!--添加xlistview的组件 -->
<animtest.com.example.e531.week2_10month.view.XListView
    android:id="@+id/xlv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</animtest.com.example.e531.week2_10month.view.XListView>

</LinearLayout>

item_pic

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tv_title"/>

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:scaleType="fitXY"
    android:id="@+id/img"
    android:layout_gravity="center"/>

</LinearLayout>

item_title

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/tv_title"/>

</LinearLayout>

layout_fragment_normal

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tvv"
    android:textSize="22sp"/>

</LinearLayout>

shouye_layout

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusableInTouchMode="true"
android:focusable="true">

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<!--tabLayout
修改 app:tabGravity="fill"  app:tabMode="fixed",使选项卡可以平铺整个屏幕
-->
<android.support.design.widget.TabLayout
    android:layout_width="match_parent"
    android:layout_height="40dp"
    app:tabGravity="fill"
    app:tabIndicatorColor="@color/colorAccent"
    app:tabMode="fixed"
    app:tabSelectedTextColor="@color/colorPrimaryDark"
    app:tabTextColor="@color/colorPrimary"
    android:id="@+id/tab"></android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/vp"></android.support.v4.view.ViewPager>

</LinearLayout>

xlistview_footer

xlistview_header



radiobutton_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--选中时是红色-->
    <item android:state_checked="true" android:drawable="@android:color/holo_red_dark"></item>
    <item android:drawable="@android:color/white"></item>

</selector>



bean类Result

MyTask

package animtest.com.example.e531.week2_10month.Utils;

        import android.os.AsyncTask;
        import java.io.IOException;
        import java.io.InputStream;
        import java.net.HttpURLConnection;
        import java.net.MalformedURLException;
        import java.net.URL;

/**
 * 使用AsyncTask+HttpURLConnection请求数据
 * Created by e531 on 2017/10/12.
 */
public class MyTask extends AsyncTask<String,Void,String> {

    //申请一个接口类对象
    private  Icallbacks icallbacks;

    //将无参构造设置成私有的,使之在外部不能够调用
    private MyTask(){}

    //定义有参构造方法
    public MyTask(Icallbacks icallbacks) {
        this.icallbacks = icallbacks;
    }

    @Override
    protected String doInBackground(String... params) {
        String str="";

        try {
            //使用HttpUrlConnection
            URL url=new URL(params[0]);
            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setReadTimeout(5000);
            connection.setConnectTimeout(5000);

            if(connection.getResponseCode()==200){
                InputStream inputStream=connection.getInputStream();
                //调用工具类中的静态方法
                str=StreamToString.streamToStr(inputStream,"utf-8");
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
        return str;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        //解析,封装到bean,更新ui组件
        icallbacks.updateUiByjson(s);
    }
    //定义一个接口
    public interface Icallbacks{
        /**
         * 根据回传的json字符串,解析并更新页面组件
         * @param jsonstr
         */
        void updateUiByjson(String jsonstr);
    }
}

StreamToString
package animtest.com.example.e531.week2_10month.Utils;
        import java.io.BufferedReader;
        import java.io.InputStream;
        import java.io.InputStreamReader;

/**
 * Created by e531 on 2017/10/12.
 */
public class StreamToString {

    public static String streamToStr(InputStream inputStream, String chartSet){

        StringBuilder builder=new StringBuilder();
        try {
            BufferedReader br=new BufferedReader(new InputStreamReader(inputStream,chartSet));
            String con;
            while ((con=br.readLine())!=null){
                builder.append(con);
            }

            br.close();
            return builder.toString();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}

MyApplication
package animtest.com.example.e531.week2_10month;

        import android.app.Application;

        import animtest.com.example.e531.week2_10month.Utils.ImageloaderUtil;

/**
 * Created by e531 on 2017/10/17.
 */
public class MyApplication  extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        ImageloaderUtil.initConfig(this);
    }
}

ImageloaderUtil

package animtest.com.example.e531.week2_10month.Utils;

        import android.content.Context;
        import android.graphics.Bitmap;
        import android.os.Environment;
        import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
        import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
        import com.nostra13.universalimageloader.core.DisplayImageOptions;
        import com.nostra13.universalimageloader.core.ImageLoader;
        import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
        import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
        import java.io.File;

/**
 *
 */
public class ImageloaderUtil {
    /**
     * ImageLoader的配置
     * @param context
     */
    public static void initConfig(Context context) {
        //配置
//        File cacheFile=context.getExternalCacheDir();
        File cacheFile= new File(Environment.getExternalStorageDirectory()+"/"+"image");

        ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(480, 800)//缓存图片最大的长和宽
                .threadPoolSize(2)//线程池的数量
                .threadPriority(4)
                .memoryCacheSize(2*1024*1024)//设置内存缓存区大小
                .diskCacheSize(20*1024*1024)//设置sd卡缓存区大小
                .diskCache(new UnlimitedDiscCache(cacheFile))//自定义缓存目录
                .writeDebugLogs()//打印日志内容
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
                .build();

        ImageLoader.getInstance().init(config);

    }

    /**
     * 获取图片设置类
     * @return
     */
    public static DisplayImageOptions getImageOptions(){

        DisplayImageOptions optionsoptions=new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
                .displayer(new RoundedBitmapDisplayer(10))//设置圆角,参数代表弧度
                .build();

        return optionsoptions;
    }
}
NetStateUtil
package animtest.com.example.e531.week2_10month.Utils;

        import android.app.AlertDialog;
        import android.content.Context;
        import android.content.DialogInterface;
        import android.content.Intent;
        import android.net.ConnectivityManager;
        import android.net.NetworkInfo;
        import animtest.com.example.e531.week2_10month.R;

/**
 * 得到网络状态的工具类
 * Created by e531 on 2017/10/16.
 */
public class NetStateUtil {

    /*
 * 判断网络连接是否已开
 * true 已打开  false 未打开
 * */
    public static boolean isConn(Context context){
        boolean bisConnFlag=false;
        ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo network = conManager.getActiveNetworkInfo();
        if(network!=null){
            bisConnFlag=conManager.getActiveNetworkInfo().isAvailable();
        }
        return bisConnFlag;
    }

    /**
     * 当判断当前手机没有网络时选择是否打开网络设置
     * @param context
     */
    public static void showNoNetWorkDlg(final Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setIcon(R.mipmap.ic_launcher)         //
                .setTitle(R.string.app_name)            //
                .setMessage("当前无网络").setPositiveButton("设置", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 跳转到系统的网络设置界面
                Intent intent = null;
                // 先判断当前系统版本
                if(android.os.Build.VERSION.SDK_INT > 10){  // 3.0以上
                    intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
                }else{
                    intent = new Intent();
                    intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
                }
                context.startActivity(intent);

            }
        }).setNegativeButton("知道了", null).show();
    }
}
导入
XListView
XListViewFooter
XListViewHeader

MyLvAdapter

package animtest.com.example.e531.week2_10month.adapter;

        import android.content.Context;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.BaseAdapter;
        import android.widget.ImageView;
        import android.widget.TextView;

        import com.nostra13.universalimageloader.core.ImageLoader;

        import java.util.List;

        import animtest.com.example.e531.week2_10month.R;
        import animtest.com.example.e531.week2_10month.Utils.ImageloaderUtil;
        import animtest.com.example.e531.week2_10month.bean.Result;

/**
 * Created by e531 on 2017/10/17.
 */
public class MyLvAdapter  extends BaseAdapter{
    private List<Result.ResultsEntity> lists;
    private Context context;

    //定义视图类型
    private final int TYPE_TITLE=0;
    private final int TYPE_PIC=1;

    public MyLvAdapter(List<Result.ResultsEntity> lists, Context context) {
        this.lists = lists;
        this.context = context;
    }

    @Override
    public int getCount() {
        return lists.size();
    }


    //返回视图类型的数量
    @Override
    public int getViewTypeCount() {
        return 2;
    }

    //根据当前的条目的下标,返回此条目对应的视图类型
    @Override
    public int getItemViewType(int position) {
        //根据数据去判断返回的类型
        Result.ResultsEntity entity=lists.get(position);
        List<String> imgurl=entity.getImages();
        if(imgurl==null){
            return TYPE_TITLE;
        }else{
            return TYPE_PIC;
        }

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //根据position得到视图类型
        int type=getItemViewType(position);
        if(type==TYPE_TITLE){
            ViewHolderTitle holderTitle;
            if(convertView==null){
                holderTitle=new ViewHolderTitle();
                convertView=View.inflate(context, R.layout.item_title,null);
                holderTitle.textView=(TextView) convertView.findViewById(R.id.tv_title);
                convertView.setTag(holderTitle);

            }else{
                holderTitle=(ViewHolderTitle) convertView.getTag();
            }
            holderTitle.textView.setText(lists.get(position).getDesc());


        }else if(type==TYPE_PIC){

            ViewHolderPic holderPic;
            if(convertView==null){
                holderPic=new ViewHolderPic();
                convertView=View.inflate(context, R.layout.item_pic,null);
                holderPic.textView=(TextView) convertView.findViewById(R.id.tv_title);
                holderPic.imageView=(ImageView) convertView.findViewById(R.id.img);
                convertView.setTag(holderPic);

            }else{
                holderPic=(ViewHolderPic) convertView.getTag();
            }
            holderPic.textView.setText(lists.get(position).getDesc());

            //加载图片
            ImageLoader.getInstance().displayImage(
                    lists.get(position).getImages().get(0),
                    holderPic.imageView,
                    ImageloaderUtil.getImageOptions());
        }
        return convertView;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public Object getItem(int position) {
        return lists.get(position);
    }

    class ViewHolderTitle{
        TextView textView;
    }

    class ViewHolderPic{
        TextView textView;
        ImageView imageView;
    }
}

MyPagerAdapter

package animtest.com.example.e531.week2_10month.adapter;

        import android.support.v4.app.Fragment;
        import android.support.v4.app.FragmentManager;
        import android.support.v4.app.FragmentPagerAdapter;
        import android.support.v4.view.PagerAdapter;
        import android.view.View;

        import java.util.List;

        import animtest.com.example.e531.week2_10month.fragments.ContentFragment;
        import animtest.com.example.e531.week2_10month.fragments.DongTaiFragment;
        import animtest.com.example.e531.week2_10month.fragments.FindFragment;

/**
 * Created by e531 on 2017/10/17.
 */
public class MyPagerAdapter extends FragmentPagerAdapter {

    //选项卡文字列表
    private List<String> tabs;

    public MyPagerAdapter(FragmentManager fm,List<String> tabs) {
        super(fm);
        this.tabs=tabs;
    }

    //用于返回选项卡的文本
    @Override
    public CharSequence getPageTitle(int position) {
        return tabs.get(position);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment f=null;
        switch (position){
            case 0:
                f=new DongTaiFragment();//动态页面
                break;
            case 1:
                f=new ContentFragment();//热门页面
                break;
            case 2:
                f=new FindFragment();//发现页面
                break;
        }

        return f;
    }

    @Override
    public int getCount() {
        return tabs.size();
    }
}

fragment

ContentFragment

package animtest.com.example.e531.week2_10month.fragments;

        import android.os.Bundle;
        import android.os.Handler;
        import android.support.annotation.Nullable;
        import android.support.v4.app.Fragment;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;

        import com.google.gson.Gson;

        import java.util.ArrayList;
        import java.util.List;

        import animtest.com.example.e531.week2_10month.R;
        import animtest.com.example.e531.week2_10month.Utils.MyTask;
        import animtest.com.example.e531.week2_10month.adapter.MyLvAdapter;
        import animtest.com.example.e531.week2_10month.bean.Result;
        import animtest.com.example.e531.week2_10month.view.XListView;

/**
 * Created by e531 on 2017/10/17.
 */
public class ContentFragment extends Fragment {

    private View v;
    private int pageIndex=1;
    private MyLvAdapter lvAdapter;
    private List<Result.ResultsEntity> lists=new ArrayList<>();
    private XListView xlv;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = View.inflate(getActivity(), R.layout.content,null);

        xlv = (XListView) v.findViewById(R.id.xlv);

        //进行设置
        xlv.setPullRefreshEnable(true);
        xlv.setPullLoadEnable(true);

        //设置监听
        xlv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {

                pageIndex=1;

                MyTask mytask=new MyTask(new MyTask.Icallbacks() {
                    @Override
                    public void updateUiByjson(String jsonstr) {
                        Gson gson=new Gson();
                        Result result=gson.fromJson(jsonstr, Result.class);
                        //要显示的数据-添加到最前面
                        lists.addAll(0,result.getResults());
                        //设置适配器
                        setAdapter();

                        //关闭视图
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                xlv.stopRefresh();
                            }
                        },1000);
                    }
                });
                mytask.execute("http://gank.io/api/data/Android/10/"+pageIndex);

            }

            @Override
            public void onLoadMore() {
                pageIndex++;

                MyTask mytask=new MyTask(new MyTask.Icallbacks() {
                    @Override
                    public void updateUiByjson(String jsonstr) {
                        Gson gson=new Gson();
                        Result result=gson.fromJson(jsonstr, Result.class);
                        //要显示的数据
                        lists.addAll(result.getResults());
                        //设置适配器
                        setAdapter();

                        //关闭视图
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                xlv.stopLoadMore();

                            }
                        },1000);
                    }
                });
                mytask.execute("http://gank.io/api/data/Android/10/"+pageIndex);

            }
        });

        return v;
    }

    public void setAdapter(){
        if(lvAdapter==null){
            lvAdapter=new MyLvAdapter(lists,getActivity());
            xlv.setAdapter(lvAdapter);

        }else{
            lvAdapter.notifyDataSetChanged();
        }
    }

    private void requestNetData() {
        MyTask mytask=new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updateUiByjson(String jsonstr) {
                Gson gson=new Gson();
                Result result=gson.fromJson(jsonstr, Result.class);
                //要显示的数据
                lists.addAll(result.getResults());
                //设置适配器
                setAdapter();
            }
        });
        mytask.execute("http://gank.io/api/data/Android/10/"+pageIndex);

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        requestNetData();
    }
}

DongTaiFragment

FindFragment

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v=inflater.inflate(R.layout.layout_fragment_normal,null);
    TextView textView=(TextView) v.findViewById(R.id.tvv);
    textView.setText("动态");
    return v;
}

ShouYeFragment

package animtest.com.example.e531.week2_10month.fragments;

        import android.os.Bundle;
        import android.support.annotation.Nullable;
        import android.support.design.widget.TabLayout;
        import android.support.v4.app.Fragment;
        import android.support.v4.view.ViewPager;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;

        import java.util.ArrayList;
        import java.util.List;

        import animtest.com.example.e531.week2_10month.R;
        import animtest.com.example.e531.week2_10month.adapter.MyPagerAdapter;

/**
 * Created by e531 on 2017/10/16.
 */
public class ShouYeFragment  extends Fragment{

    private View v;
    private TabLayout tab;
    private ViewPager viewPager;
    private List<String> tabs;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.shouye_layout,null);

        initView();

        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        tabs=new ArrayList<>();
        tabs.add("动态");
        tabs.add("热门");
        tabs.add("发现");

        //设置viewpager的适配器
        viewPager.setAdapter(new MyPagerAdapter(getChildFragmentManager(),tabs));

        //进行关联
        tab.setupWithViewPager(viewPager);
    }

    private void initView() {
        tab = (TabLayout) v.findViewById(R.id.tab);
        viewPager = (ViewPager) v.findViewById(R.id.vp);

    }
}

MainActivity

package animtest.com.example.e531.week2_10month;

        import android.support.v4.app.Fragment;
        import android.support.v4.app.FragmentManager;
        import android.support.v4.app.FragmentTransaction;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.transition.Transition;
        import android.widget.RadioGroup;
        import android.widget.Toast;

        import animtest.com.example.e531.week2_10month.fragments.GengDuoFragment;
        import animtest.com.example.e531.week2_10month.fragments.ShiChangFragment;
        import animtest.com.example.e531.week2_10month.fragments.ShouYeFragment;
        import animtest.com.example.e531.week2_10month.fragments.TongZhiFragment;
        import animtest.com.example.e531.week2_10month.fragments.XiangfaFragment;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RadioGroup radioGroup= (RadioGroup) findViewById(R.id.radio_group);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.radio_01:
                        addFragment(new ShouYeFragment());
                        break;
                    case R.id.radio_02:
                        addFragment(new XiangfaFragment());
                        break;
                    case R.id.radio_03:
                        addFragment(new ShiChangFragment());
                        break;
                    case R.id.radio_04:
                        addFragment(new TongZhiFragment());
                        break;
                    case R.id.radio_05:
                        addFragment(new GengDuoFragment());
                        break;
                    default:
                        break;
                }
            }
        });

        //添加“首页”页面
        addFragment(new ShouYeFragment());
    }

    public  void addFragment(Fragment f){
        FragmentManager manager=getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = manager.beginTransaction();
        fragmentTransaction.replace(R.id.frame_layout,f);
        fragmentTransaction.commit();
    }
}

注:清单文件里加入权限



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值