• Android 下第一个fragment app 先Java 后Kotlin


    看着视频学习的,Fragment:3.Fragment使用方法_哔哩哔哩_bilibili

    程序的运行效果是,手机页面有2个fragment,每个fragment 有一个text view,一个按钮,按一下显示,'fine,and you?',各自独立。

    在android studio 下新建一个工程,类型是 Empty View Activity,本身就有一个Activity。就有文件MainActivity.java 或者kt,还有一个layout 文件,activity_main.xml。新建一个fragment,操作如下图:

    可以看到左边有4个文件:程序文件 BlankFragment.kt,MainActivity.kt (Java版本是Java),布局文件activity.xml,fragment_blank.xml,分别对4个文件修改,先简化,再添加点点代码。然后就测试成功了。

    最后文件如下:

    activity.xml

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. xmlns:app="http://schemas.android.com/apk/res-auto"
    4. xmlns:tools="http://schemas.android.com/tools"
    5. android:layout_width="match_parent"
    6. android:layout_height="match_parent"
    7. android:orientation="vertical"
    8. tools:context=".MainActivity">
    9. <TextView
    10. android:layout_width="wrap_content"
    11. android:layout_height="0dp"
    12. android:layout_weight="1"
    13. android:text="Hello World!" />
    14. <fragment android:name="com.liwensoft.hellofragment.BlankFragment"
    15. android:layout_width="match_parent"
    16. android:layout_height="0dp"
    17. android:layout_weight="4"
    18. android:id="@+id/fragment1"
    19. />
    20. <fragment android:name="com.liwensoft.hellofragment.BlankFragment"
    21. android:layout_width="match_parent"
    22. android:layout_height="0dp"
    23. android:layout_weight="4"
    24. android:id="@+id/fragment2"
    25. />
    26. LinearLayout>

    fragment_blank.xml 

    1. "1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:orientation="vertical">
    6. <TextView
    7. android:layout_width="match_parent"
    8. android:layout_height="40dp"
    9. android:text="@string/hello_blank_fragment"
    10. android:id="@+id/tv1"/>
    11. <Button
    12. android:layout_width="match_parent"
    13. android:layout_height="40dp"
    14. android:id="@+id/button"
    15. android:text="how are you"/>
    16. LinearLayout>

    应用代码文件MainActivity.kt

    1. package com.liwensoft.hellofragment
    2. import androidx.appcompat.app.AppCompatActivity
    3. import android.os.Bundle
    4. class MainActivity : AppCompatActivity() {
    5. override fun onCreate(savedInstanceState: Bundle?) {
    6. super.onCreate(savedInstanceState)
    7. setContentView(R.layout.activity_main)
    8. }
    9. }

    BlankFragment.kt

    1. package com.liwensoft.hellofragment
    2. import android.os.Bundle
    3. import androidx.fragment.app.Fragment
    4. import android.view.LayoutInflater
    5. import android.view.View
    6. import android.view.ViewGroup
    7. import android.widget.Button
    8. import android.widget.TextView
    9. class BlankFragment : Fragment() {
    10. private lateinit var tv: TextView
    11. private lateinit var root:View
    12. override fun onCreate(savedInstanceState: Bundle?) {
    13. super.onCreate(savedInstanceState)
    14. }
    15. override fun onCreateView(
    16. inflater: LayoutInflater, container: ViewGroup?,
    17. savedInstanceState: Bundle?
    18. ): View? {
    19. // Inflate the layout for this fragment
    20. root= inflater.inflate(R.layout.fragment_blank, container, false)
    21. tv=root.findViewById(R.id.tv1)
    22. val button=root.findViewById
    23. button.setOnClickListener( ){
    24. tv.setText("fine, and you?")
    25. }
    26. return root
    27. }
    28. }

    因为视频是java 语言,首先完成的是java ,其布局文件一样,代码是java的,分别如下:

    MainActivity.java

    1. package com.liwensoft.hellofragmentjava;
    2. import androidx.appcompat.app.AppCompatActivity;
    3. import android.os.Bundle;
    4. public class MainActivity extends AppCompatActivity {
    5. @Override
    6. protected void onCreate(Bundle savedInstanceState) {
    7. super.onCreate(savedInstanceState);
    8. setContentView(R.layout.activity_main);
    9. }
    10. }

    FragmentBlank.java

    1. package com.liwensoft.hellofragmentjava;
    2. import android.os.Bundle;
    3. import androidx.fragment.app.Fragment;
    4. import android.view.LayoutInflater;
    5. import android.view.View;
    6. import android.view.ViewGroup;
    7. import android.widget.Button;
    8. import android.widget.TextView;
    9. public class BlankFragment extends Fragment {
    10. private View root;
    11. private TextView textview;
    12. private Button button;
    13. @Override
    14. public void onCreate(Bundle savedInstanceState) {
    15. super.onCreate(savedInstanceState);
    16. }
    17. @Override
    18. public View onCreateView(LayoutInflater inflater, ViewGroup container,
    19. Bundle savedInstanceState) {
    20. // Inflate the layout for this fragment
    21. if(root==null) {
    22. root = inflater.inflate(R.layout.fragment_blank, container, false);
    23. }
    24. textview=root.findViewById(R.id.tv1);
    25. button=root.findViewById(R.id.button);
    26. button.setOnClickListener(new View.OnClickListener() {
    27. @Override
    28. public void onClick(View v) {
    29. textview.setText("fine,and you?");
    30. }
    31. });
    32. return root;
    33. }
    34. }

    代码简单易懂,但我开始转了很多地方,列出方便初学者上手。

  • 相关阅读:
    ubunt18.04.4 安装petalinux2022.2
    java面向对象(三)
    php如何解决高并发的问题?
    python实现爬虫例子2
    八大排序算法
    红队系列-IOT安全深入浅出
    Canal—增量同步数据组件
    51单片机——DS1302时钟
    图论------如何使用矩阵来存储图的信息(邻接矩阵表示法)。
    对象存储只能按文件名搜索,你out了吧
  • 原文地址:https://blog.csdn.net/leon_zeng0/article/details/132612641