tabview的子代如何访问包含tabview的视图元素?

时间:2014-06-12 17:08:06

标签: android

我有一个按钮,下面有一些带有几个标签的tabview 我在哪里选择一个标签,我想听主要活动元素的陈词滥调。例如,我如何听取imRefresh的点击次数? 如果我设置onitem click listener我会收到nullpointer异常

主要活动,ititialise tabview

public class MainActivity extends TabActivity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TabHost tabHost = getTabHost(); 

        // Android tab
        Intent intentAndroid = new Intent().setClass(this, Tab1Activity.class);
        TabSpec tabSpecAndroid = tabHost
          .newTabSpec("Test1")
          .setIndicator("Test1")
          .setContent(intentAndroid);

        // Apple tab
        Intent intentApple = new Intent().setClass(this, Tab2Activity.class);
        TabSpec tabSpecApple = tabHost
          .newTabSpec("Test2")
          .setIndicator("Test2")
          .setContent(intentApple);



        // add all tabs 
        tabHost.addTab(tabSpecAndroid);
        tabHost.addTab(tabSpecApple);


        //set Windows tab as default (zero based)
        tabHost.setCurrentTab(2);
    }

}

主要活动布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/for_t"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/background"
        android:gravity="center"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="6dp"
            android:src="@drawable/logo" />

        <ImageView
            android:id="@+id/imRefresh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="5dip"
            android:layout_toLeftOf="@+id/imageView3"
            android:src="@drawable/ic_action_refresh" />

        <ImageView
            android:id="@+id/imSearch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@drawable/ic_action_search" />
    </RelativeLayout>

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="yarh.youtubenblog.MainActivity"
        tools:ignore="MergeRootFrame" >

        <TabHost
            android:id="@android:id/tabhost"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >

                <TabWidget
                    android:id="@android:id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >
                </TabWidget>

                <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </FrameLayout>
            </LinearLayout>
        </TabHost>
    </FrameLayout>



</LinearLayout>

标签活动之一

public class Tab2Activity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ImageView refresh = (ImageView) findViewById(R.id.imRefresh);
        refresh.setOnClickListener(refreshV);
        TextView textview = new TextView(this);
        textview.setText("This is Apple tab");
        setContentView(textview);
    }
    private OnClickListener refreshV = new OnClickListener() {

        @Override
        public void onClick(View v) {
            GetAdds feed = new GetAdds();
            feed.execute();

        }
    };
}

1 个答案:

答案 0 :(得分:0)

你不能 - 期间。甚至没有通过浏览ViewParents和窗口层次结构。抱歉。这是由于TabActivity的工作原理:它的每个选项卡实际上都是它自己独立的Activity,它可以通过Android Framework上的一些魔法“移植”到TabActivity中。单独的活动绝对没有办法(通过Android API)获取彼此的查看信息。

什么使你的任务变得更简单,就是切换到碎片。您的用例是最常见的示例之一:查看http://android.codeandmagic.org/android-tabs-with-fragments/