zoukankan      html  css  js  c++  java
  • 关于Android中Fragment静态和动态加载的方法

    一.静态加载

    1.首先创建一个layout布局fragment.xml,里面放要显示和操作的控件

    2.创建一个layout布局main1.xml,用来实现页面的跳转(跳转为要实现静态加载的界面)

    3.创建一个layout布局main2.xml,用来实现MyFragment类的转换为视图控件的定义

    4.创建一个继承自Activity的Main1.java类,载入main1.xml的视图,并且实现点击后页面跳转为Main2.java类

    5.创建一个继承自Activity的Main2.java类,载入main2.xml的视图,并且实现点击后fragment.xml中组件的text改变的效果,main2.java中可以直接引用fragment.xml中的控件

    6.创建一个继承自ragment的MyFragment.java类,载入fragment.xml的视图,并且设置fragment.xml中组件的text初始的值

    7.在AndroidMainFest文件里面定义Activity的Main1.java类和Activity的Main2.java类,并把Main1.java定义为初始的Activity界面

    fragment.xml

    <TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />
    
    
    <Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="改变" />

    main1.xml

    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="静态加载" />

    main2.xml

    <fragment 
    android:id="@+id/fragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:name="com.example.fragmentjing.MyFragment"
    />

    Main1.java

    public class Main1 extends Activity {
    
      private Button btn1;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
    
        btn1=(Button) findViewById(R.id.button1);
    
        btn1.setOnClickListener(new OnClickListener(){
    
        @Override
        public void onClick(View v) {
          // TODO Auto-generated method stub
          Intent intent = new Intent(Main1.this,Main2.class);
          startActivity(intent);
        }
    
      });
    
    }

    Main2.java

    public class Main2 extends Activity {
      private TextView text;
      private Button button;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
    
        button=(Button) findViewById(R.id.button4);
        text=(TextView) findViewById(R.id.textView4);
    
    
        button.setOnClickListener(new OnClickListener(){
    
        @Override
        public void onClick(View v) {
          // TODO Auto-generated method stub
          text.setText("TextView的值改变了");    
        }    
       });
     }
    }

    MyFragment.java

    public class MyFragment extends Fragment{
    
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      View view=inflater.inflate(R.layout.fragment,container,false);
      TextView textView=(TextView)view.findViewById(R.id.textView4);
      textView.setText("静态加载Fragment");
      return view;
      }
    }

    二.动态加载

    1.首先创建一个layout布局fragment.xml,里面放要显示和操作的控件

    2.创建一个layout布局main1.xml,用来实现页面的跳转(跳转为要实现静态加载的界面)

    3.创建一个继承自Activity的Main1.java类,载入main1.xml的视图,并且实现点击后创建MyFragment2.java类的事件

    4.创建一个继承自ragment的MyFragment2.java类,载入fragment.xml的视图,并且设置fragment.xml中组件的text初始的值

    5.在AndroidMainFest文件里面定义Activity的Main1.java类和Activity的Main2.java类,并把Main1.java定义为初始的Activity界面

    fragment.xml

    <TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />
    
    
    <Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="改变" />

    main1.xml

    <LinearLayout
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    </LinearLayout>

    Main1.java

    public class Main1 extends Activity {
    
      private Button btn2;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);
        btn2=(Button) findViewById(R.id.button2);
    
        btn2.setOnClickListener(new OnClickListener(){
    
          @Override
          public void onClick(View v) {
            // TODO Auto-generated method stub
            MyFragment2 fragment2 = new MyFragment2();
            FragmentManager fragmrentManager = getFragmentManager();
            FragmentTransaction beginTransaction = fragmrentManager.beginTransaction();
            beginTransaction.add(R.id.frame, fragment2);
            beginTransaction.addToBackStack(null);
            beginTransaction.commit();
            }
          });
        }
    }

    MyFragment2.java

    public class MyFragment2 extends Fragment{
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view=inflater.inflate(R.layout.fragment,container,false);
        TextView textView=(TextView)view.findViewById(R.id.textView4);
        textView.setText("动态加载Fragment");
        return view;
      }
    }
  • 相关阅读:
    C++自定义异常类
    上下栏固定, 中间滚动的HTML模板
    C# 代理应用
    C# 对象池的实现(能限制最大实例数量,类似于WCF的MaxInstanceCount功能)
    半同步半异步模式的实现
    EventBus实现
    C Socket初探
    C Socket初探
    VC++全屏
    MFC 坦克定位
  • 原文地址:https://www.cnblogs.com/HangZhe/p/5730890.html
Copyright © 2011-2022 走看看