使用fragment,Pad手机共用一套代码

项目代码结构:

1:MainActivity.java

package com.example.fgtest;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

    }

}

layout/activity_main.xml

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

    <fragment
        android:id="@+id/fgNoticeTitle"
        android:name="com.wzh.fragment.NoticeTitleFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

layout-sw600dp/activity_main.xml

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

    <fragment
        android:id="@+id/fgNoticeTitle"
        android:name="com.wzh.fragment.NoticeTitleFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"/>

    <FrameLayout
        android:id="@+id/flNoticeContent"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3">
        <fragment
            android:id="@+id/fgNoticeContent"
            android:name="com.wzh.fragment.NoticeContentFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </FrameLayout>
</LinearLayout>

2:实体对象Notice.java

package com.wzh.bean;

public class Notice {
    private String title;
    private String content;

    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }

}

3:NoticeAdapter.java

package com.wzh.adapter;

import java.util.List;

import com.example.fgtest.R;
import com.wzh.bean.Notice;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class NoticeAdapter extends ArrayAdapter<Notice>{
    int resourceId;

    public NoticeAdapter(Context context, int resourceId, List<Notice> list){
        super(context, resourceId, list);
        this.resourceId = resourceId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Notice notice = getItem(position);
        View view;
        ViewHolder viewHolder;

        if(convertView==null){
            view = LayoutInflater.from(getContext()).inflate(this.resourceId, null);

            viewHolder = new ViewHolder();

            viewHolder.tvNoticeTitle = (TextView)view.findViewById(R.id.tvNoticeTitle);

            viewHolder.tvNoticeTitle.setText(notice.getTitle());

            view.setTag(viewHolder);
        }else{
            view = convertView;
            viewHolder = (ViewHolder)view.getTag();
        }

        return view;
    }

    class ViewHolder{
        TextView tvNoticeTitle;
    }
}

fragment_notice_content.xml

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

    <TextView
        android:id="@+id/tvNoticeTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvNoticeContent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"/>

</LinearLayout>

4:NoticeContentActivity.java

package com.example.fgtest;

import com.wzh.fragment.NoticeContentFragment;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

public class NoticeContentActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_notice_content);

        String title = getIntent().getStringExtra("title");
        String content = getIntent().getStringExtra("content");

        NoticeContentFragment noticeContentFragment = (NoticeContentFragment)
                getFragmentManager().findFragmentById(R.id.fgNoticeContent);
        noticeContentFragment.refreshNoticeContent(title, content);

    }

    public static void openActivity(Context context, String title, String content){
        Intent intent = new Intent(context, NoticeContentActivity.class);
        intent.putExtra("title", title);
        intent.putExtra("content", content);
        context.startActivity(intent);
    }
}

activity_notice_content.xml

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

    <fragment
        android:id="@+id/fgNoticeContent"
        android:name="com.wzh.fragment.NoticeContentFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

5:NoticeContentFragment.java

package com.wzh.fragment;

import com.example.fgtest.R;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class NoticeContentFragment extends Fragment{
    View view;

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

        return view;
    }

    public  void refreshNoticeContent(String title,String content){
        TextView tvNoticeTitle = (TextView)view.findViewById(R.id.tvNoticeTitle);
        TextView tvNoticeContent = (TextView)view.findViewById(R.id.tvNoticeContent);

        tvNoticeTitle.setText(title);
        tvNoticeContent.setText(content);
    }
}

fragment_notice_content.xml

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

    <TextView
        android:id="@+id/tvNoticeTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/tvNoticeContent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"/>

</LinearLayout>

6:NoticeTitleFragment.java

package com.wzh.fragment;

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

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

import com.example.fgtest.NoticeContentActivity;
import com.example.fgtest.R;
import com.wzh.adapter.NoticeAdapter;
import com.wzh.bean.Notice;

public class NoticeTitleFragment extends Fragment{

    NoticeAdapter noticeAdapter;
    ListView lvNoticeTitle;
    List<Notice> noticeList;
    boolean isTwoPanel = false;
    int curClickPosition = -1;
    NoticeContentFragment noitceContentFragment;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        getNoticeTestData();
        noticeAdapter = new NoticeAdapter(activity,R.layout.list_notice_title_item,noticeList);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_notice_title, container, false);

        lvNoticeTitle = (ListView)view.findViewById(R.id.lvNoticeTitle);
        lvNoticeTitle.setAdapter(noticeAdapter);
        lvNoticeTitle.setOnItemClickListener(itemClickListener());

        return view;
    }

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

        if(getActivity().findViewById(R.id.flNoticeContent)!=null){
            isTwoPanel = true;
            noitceContentFragment = (NoticeContentFragment)
                    getActivity().getFragmentManager().findFragmentById(R.id.fgNoticeContent);
            if(noticeList.size()>0){
                Notice notice = noticeList.get(0);
                noitceContentFragment.refreshNoticeContent(notice.getTitle(), notice.getContent());
            }
        }else{
            isTwoPanel = false;
        }
    }

    OnItemClickListener itemClickListener(){
        return new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                Notice notice = noticeList.get(arg2);
                String title = notice.getTitle();
                String content = notice.getContent();
                if(isTwoPanel){
                    if(curClickPosition!=arg2){
                        noitceContentFragment.refreshNoticeContent(title, content);
                    }
                    curClickPosition = arg2;
                }else{
                    NoticeContentActivity.openActivity(getActivity(), title, content);
                }
            }

        };
    }

    void getNoticeTestData(){
        noticeList = new ArrayList<Notice>();
        Notice notice = new Notice();
        notice.setTitle("测试标题1");
        notice.setContent("测试标题内容1");
        noticeList.add(notice);
        notice = new Notice();
        notice.setTitle("测试标题2");
        notice.setContent("测试标题内容2");
        noticeList.add(notice);
        notice = new Notice();
        notice.setTitle("测试标题3");
        notice.setContent("测试标题内容3");
        noticeList.add(notice);
    }
}

fragment_notice_title.xml

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

    <ListView
        android:id="@+id/lvNoticeTitle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
时间: 2024-08-02 00:39:20

使用fragment,Pad手机共用一套代码的相关文章

【原创】从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(二)

导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(未完待续)(四)Electron配置润色(未完待续)(五)预加载及自动更新(未完待续)(六)构建.发布整个项目(包括client和web)(未完待续) 摘要:上篇文章说到了如何新建工程,并启动一个最简单的Electron应用.“跑起来”了Electron,那就接着把Vue“跑起来”吧.有一点需要说明的是,webpack是贯穿这个系列始终的,我也是

js实现一套代码来控制所有的运动,图片的淡入淡出,winth,height的变宽

介绍了那么多运动,這次一套代码实现所有运动 1.html代码和css代码,只是定义一个div 1 <style> 2 div{ 3 width:200px; 4 height:200px; 5 margin:20px; 6 float:left; 7 background:yellow; 8 border:10px solid black; 9 filter:alpha(opacity:30); 10 opacity:0.3; 11 } 12 </style> 13 <bod

腾讯的手机屏幕的适配代码

腾讯的适配代码 ,比较权威 ,果断盗用! <script type="text/javascript"> if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test

Android手机通讯录备份还原代码

实现方法很简单1.把通讯录中的联系人,电话号码保存到txt文件中完成备份.2.读取txt文件,导入到通讯录完成还原. 具体代码1.添加 通讯录读写权限,存储卡写权限 <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission><uses-permission android:name="android.permission.WRITE_EXT

适合安卓手机网页客户端导航代码

安卓手机底部四五分页的导航都是比较漂亮的 今天直接给大家推荐这款代码,这样就省得每次自己写了 jQuery特效代码: 01<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 02<html xmlns="http://www.w3.org/1999/

AutoCAD.Net/C#.Net QQ群:193522571 多个框架共一套代码在进行迁移时的问题,properties,resource,未能加载文件或程序集“System.Drawing, Version=4.0.0.0

此时在3.5框架工程中会出现 [未能加载文件或程序集“System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项.系统找不到指定的文件. 行 123,位置 5.] 的错误,解决办法是将4.0.0.0改成2.0.0.0.如下面的代码. 另外,在namespace进行了修改后需要将“原命名空间.properties.resource ”改成“现在的命名空间.properties

Android开发——利用productFlavors实现一套代码打包多版本

一.需求背景 实际项目开发过程中,经常会遇到这样的场景:一个项目要根据需要打包成多个存在差异的版本,比如对外版本.对内版本,或者开发版本.测试版本.线上版本等等--那么如何通过维护一套代码的前提下实现打包多版本的需求呢?在Android Studio中我们可以使用productFlavors来实现这样的需求. 二.创建差异化版本目录结构 根据版本的差异化在src目录下创建对应的java文件夹,如下图: 创建external与internal版本,将版本差异化的代码文件放在这2个目录对应的文件夹下

一套代码小程序&amp;Web&amp;Native运行的探索01

前言 前面我们对微信小程序进行了研究:[微信小程序项目实践总结]30分钟从陌生到熟悉 并且用小程序翻写了之前一个demo:[组件化开发]前端进阶篇之如何编写可维护可升级的代码 之前一直在跟业务方打交道后面研究了下后端,期间还做了一些运营.管理相关工作,哈哈,最近一年工作经历十分丰富啊,生命在于不断的尝试嘛. 当然,不可避免的在前端技术一块也稍微有点落后,对React&Vue没有进行过深入一点的研究,这里得空我们便来一起研究一番(回想起来写代码的日子才是最快乐的??),因为我们现在也慢慢在切Rea

一套代码小程序&amp;Web&amp;Native运行的探索05——snabbdom

接上文:一套代码小程序&Web&Native运行的探索04——数据更新 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/master/mvvm 参考: https://github.com/fastCreator/MVVM(极度参考,十分感谢该作者,直接看Vue会比较吃力的,但是看完这个作者的代码便会轻易很多,可惜这个作者没有对应博客说明,不然就爽了) https://www.tangshuang.net/3756.html ht