• 磨人的Fragment的转换


    磨人的Fragment的转换

    本次任务是

    程序运行之后将第一个Fragment加载出来

    然后点击“SHOW NEXT PAGE”切换到第二个Fragment

    当再次点击按钮时下方出现提示“This is second fragment”

    再点击屏幕上的返回键

    切换至第一个Fragment

    任务的重点在于要制作两个Fragment,并且实现他们两个之间的跳转

    来看代码


    布局代码老规矩 直接贴上

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="暮色倾城"
            android:textSize="30dp"
            android:gravity="center_horizontal"
            android:textColor="@android:color/background_dark" />
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
            android:layout_weight="1">
    
            <Button
                android:id="@+id/button"
                android:onClick="onClick"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_gravity="center"
                android:text="show next page"
                />
        </FrameLayout>
    
        <LinearLayout
            android:id="@+id/yy_wz"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
            android:layout_weight="1">
        </LinearLayout>
    

    以上是主界面布局

     <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textSize="30sp"
            android:text="@string/lyf_fragment"
            android:background="@android:color/holo_blue_bright" />
    
    </FrameLayout>
    
      <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textSize="30sp"
            android:text="@string/yy_fragment"
            android:background="?attr/colorAccent" />
    
    </FrameLayout>
    

    以上是第二个布局代码 差不多 哈哈


    然后是主界面的Java代码

    其实这个有点困难,上课时就没做好,结果研究了很长时间运行后显示某某某程序已停止运行

    我还能说什么,自己想不出个所以然,还好有人帮忙看出了我的问题并帮我修改代码

    来看看Java代码

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
         YyFragment yyFragment;
         LyfFragment lyfFragment;
        private boolean huan = true,
                tui = false;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            FragmentManager manager = getFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            yyFragment = new YyFragment();
            transaction.add(R.id.yy_wz,yyFragment);
            transaction.commit();
        }
    
        @Override
        public void onClick(View view) {
            if(view.getId() == R.id.button){
                tui = true;
                if(huan){
                    FragmentManager manager = getFragmentManager();
                    FragmentTransaction transaction = manager.beginTransaction();
                    if ( lyfFragment == null){
                        lyfFragment = new LyfFragment();
                        transaction.replace(R.id.yy_wz,lyfFragment);
                        transaction.commit();
                        huan = false;
                    } else{
                        transaction.replace(R.id.yy_wz,lyfFragment);
                        transaction.commit();
                        huan = false;
                    }
                }else{
                    Toast.makeText(this,"This is second fragment", Toast.LENGTH_SHORT).show();
                }
    
            }}
        public boolean onKeyDown(int keyCode, KeyEvent event) {
    
            if(event.getKeyCode()== KeyEvent.KEYCODE_BACK&&tui){
    
                FragmentManager manager = getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                huan = true;
                tui = false;
                transaction.replace(R.id.yy_wz,yyFragment);
                transaction.commit();
                return  false;
            } else {
                finish();
            }
            return super.onKeyDown(keyCode, event);
    
        }
    

    最后一段那个界面的切换和退出有些地方是不明白

    虽然有注释 可是我认识汉字却读不懂那些话,只能自己再琢磨慢慢理解了

    也就是说最后一段是借鉴别人的,嗯,我会努力理解它的。

    最后 感谢小美人 哈哈。

  • 相关阅读:
    定时任务:crontab: installing new crontab
    报错:Sqoop Failing this attempt. Failing the application.
    数据库优化
    vscode ,保存失败提示:关于Failed to save 'package.json': The content of the file is newer. Please..解决办法
    php -1 month 的问题
    sql 中convert和cast区别
    [SQL case when的两种用法]
    Android编译Lame库(Mp3编解码库)
    AndroidStudio使用Cmake编译armeabi-v7a,arm64-v8a的so库
    图片压缩原理
  • 原文地址:https://www.cnblogs.com/Rose-yy/p/6730521.html
Copyright © 2020-2023  润新知