布局与片段关联时读取和设置视图

时间:2015-12-13 10:16:32

标签: android android-layout android-fragments

您好我正在制作一个Android应用程序,我通过片段实现了Tabs但我无法弄清楚如何读取和设置片段内的视图,因为片段不允许它,但布局与这些片段相关联。另外我有AsyncTask,我想在onChangeListener上执行,以便在该片段的布局中切换。我是新手,没有任何先验知识。这是创建标签的方式

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText("Devices"));
        tabLayout.addTab(tabLayout.newTab().setText("°C & H%"));
        tabLayout.addTab(tabLayout.newTab().setText("Video"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

        final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        final PagerAdapter adapter = new PagerAdapter
                (getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Device Control"
        android:id="@+id/Heading"
        android:textSize="35sp"
        android:textStyle="bold"
        android:textColor="#d009b958"
        android:gravity="center|top"
        android:backgroundTint="#380ac161" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Toggle Switch for Your Required Function"
        android:id="@+id/top_textview"
        android:textSize="15sp"
        android:layout_below="@+id/Heading"
        android:layout_marginStart="55sp"/>



    <Switch
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Light"
        android:textStyle="bold"
        android:id="@+id/switch1"
        android:layout_marginRight="25dp"
        android:textSize="25sp"
        android:layout_below="@+id/top_textview"
        android:textColor="#d009b958"
        android:layout_marginStart="60sp"
        android:layout_marginTop="50sp"
        />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Curent Status"
        android:id="@+id/text_status_led"
        android:textSize="15sp"
        android:layout_below="@+id/switch1"
        android:layout_marginStart="85sp"/>

    <Switch
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Fan"
        android:textSize="25sp"
        android:textStyle="bold"
        android:id="@+id/switch2"
        android:textOn="ON"
        android:textOff="OFF"
        android:layout_below="@+id/switch1"
        android:textColor="#d009b958"
        android:layout_marginStart="60sp"
        android:layout_marginTop="50sp"
        android:layout_marginRight="25sp"
        />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Curent Status"
        android:id="@+id/text_status_fan"
        android:textSize="15sp"
        android:layout_below="@+id/switch2"
        android:layout_marginStart="85sp"/>

    <Switch
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Door"
        android:textSize="25sp"
        android:textStyle="bold"
        android:id="@+id/switch3"
        android:textOn="ON"
        android:textOff="OFF"
        android:layout_centerVertical="true"
        android:layout_below="@+id/switch2"
        android:layout_marginStart="60sp"
        android:textColor="#d009b958"
        android:layout_marginTop="50sp"
        android:layout_marginRight="25sp"/>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Curent Status"
        android:id="@+id/text_status_door"
        android:textSize="15sp"
        android:layout_below="@+id/switch3"
        android:layout_marginStart="85sp"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText1"
        android:visibility="invisible"
        android:layout_below="@+id/switch3"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:visibility="invisible"
        android:layout_below="@+id/editText1"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Temaperature :"
        android:textColor="#d009b958"
        android:textStyle="bold"
        android:id="@+id/text_temperature"
        android:textSize="25sp"
        android:layout_below="@+id/text_status_door"
        android:layout_marginStart="15sp"
        android:layout_marginTop="35sp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="00 °C"
        android:textColor="#000001"
        android:layout_below="@id/text_temperature"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="25sp"
        android:textSize="15pt"
        android:id="@+id/text_value_temperature"

        />


</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

片段用于将视图与活动分离。

就像扩展Activity以创建自定义Activity一样,您必须扩展Fragment以创建自定义片段(假设您知道Activity是什么)。

请参阅下面的片段生命周期。

Fragment lifecycle

public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)

是使用inflater对象扩充自定义视图的地方。

View rootView = inflater.inflate(R.layout.fragment, parent, false);

第三个参数必须为false 始终。它表示视图是否要附加到父级,这将自动发生,如果您设置为 true ,则抛出异常。 现在,您可以使用View对象来处理活动,并在onCreateView方法中返回此视图

ViewPager中设置了一个适配器,它应该是一个自定义适配器来提供您的片段(在getItem(int position)方法中)。根本不需要使用AsyncTask!

This is a good place启动ViewPagers并了解片段。标签只是对你已经拥有的东西的锦上添花:)