Touch for Buttons under a Tab not Captured

Put problem concerning Views, Layouts and other XML-Resources (like AndroidManifest) here.

Touch for Buttons under a Tab not Captured

Postby hajime » Thu Nov 26, 2009 1:44 pm

It seems that the OnTouchListener for a button that's in an layout under a TabHost is not capturing the touch, like something else is stealing the touch. So basically, the button can't detect touch. I tried just having a TextView and a Button without the tabs, and the button capturing the touch worked.

The button that I'm trying to test the onTouchListener with is button0.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2. public class SmartVMS extends TabActivity {
  3.  
  4.        
  5.  
  6.         public String[] Names = {"Alice", "Bob", "Charlie"};
  7.  
  8.        
  9.  
  10.         private ListView contactList;
  11.  
  12.         private TabHost mTabHost;
  13.  
  14.         public EditText inputBox;
  15.  
  16.        
  17.  
  18.         // buttons
  19.  
  20.         Button button0;
  21.  
  22.        
  23.  
  24.         public class ContactListView extends ListActivity {
  25.  
  26.                
  27.  
  28.                 public void onCreate(Bundle savedInstanceState) {
  29.  
  30.                   super.onCreate(savedInstanceState);
  31.  
  32.                  
  33.  
  34.                   setListAdapter(new ArrayAdapter<String>(this,
  35.  
  36.                           android.R.layout.simple_list_item_1, Names));
  37.  
  38.                   getListView().setTextFilterEnabled(true);
  39.  
  40.                 }
  41.  
  42.         }
  43.  
  44.        
  45.  
  46.     public void onCreate(Bundle savedInstanceState) {
  47.  
  48.         super.onCreate(savedInstanceState);
  49.  
  50.         setContentView(R.layout.main);
  51.  
  52.  
  53.  
  54.         contactList = new ListView(SmartVMS.this);
  55.  
  56.         mTabHost = getTabHost();
  57.  
  58.        
  59.  
  60.         //setContentView(R.layout.main);
  61.  
  62.        
  63.  
  64.         TabSpec tsDialer = mTabHost.newTabSpec("tab_dialer");
  65.  
  66.         tsDialer.setIndicator("Dialer");
  67.  
  68.         tsDialer.setContent(R.id.dialer);
  69.  
  70.        
  71.  
  72.         TabSpec tsRecent = mTabHost.newTabSpec("tab_recent");
  73.  
  74.         tsRecent.setIndicator("Recent");
  75.  
  76.         tsRecent.setContent(R.id.recent);
  77.  
  78.        
  79.  
  80.         TabSpec tsContacts = mTabHost.newTabSpec("tab_contacts");
  81.  
  82.         tsContacts.setIndicator("Contacts");
  83.  
  84.         tsContacts.setContent(new TabHost.TabContentFactory() {
  85.  
  86.                 public View createTabContent(String tag) {
  87.  
  88.                         ArrayAdapter<String> adapter = new ArrayAdapter<String>
  89.  
  90.                                 (SmartVMS.this, android.R.layout.simple_list_item_1, Names);
  91.  
  92.                         contactList.setAdapter(adapter);
  93.  
  94.                         return contactList;
  95.  
  96.                 }
  97.  
  98.         });
  99.  
  100.        
  101.  
  102.         mTabHost.addTab(tsDialer);
  103.  
  104.         mTabHost.addTab(tsRecent);
  105.  
  106.         mTabHost.addTab(tsContacts);        
  107.  
  108.         mTabHost.setCurrentTab(0);
  109.  
  110.        
  111.  
  112.         // Dialer stuff
  113.  
  114.         inputBox = (EditText)this.findViewById(R.id.inputBox);
  115.  
  116.         inputBox.setText("");
  117.  
  118.        
  119.  
  120.         button0 = (Button)this.findViewById(R.id.button0);
  121.  
  122.         button0.setOnClickListener(new OnClickListener()
  123.  
  124.         {
  125.  
  126.                 public void onClick(View arg0)
  127.  
  128.                 {
  129.  
  130.                         inputBox.setText(inputBox.getText() + "0");
  131.  
  132.                 }
  133.  
  134.         });
  135.  
  136.         button0.setOnTouchListener(new OnTouchListener()
  137.  
  138.         {
  139.  
  140.                         public boolean onTouch(View arg0, MotionEvent arg1) {
  141.  
  142.                                 if(arg1.getAction()==MotionEvent.ACTION_DOWN) {
  143.  
  144.                                         inputBox.setText(inputBox.getText() + "0");
  145.  
  146.                                 }
  147.  
  148.                                 return true;
  149.  
  150.                         }
  151.  
  152.         });
  153.  
  154.         Button button1 = (Button)this.findViewById(R.id.button1);
  155.  
  156.         button1.setOnClickListener(new OnClickListener()
  157.  
  158.         {
  159.  
  160.                 public void onClick(View arg0)
  161.  
  162.                 {
  163.  
  164.                         inputBox.setText(inputBox.getText() + "1");
  165.  
  166.                 }
  167.  
  168.         });
  169.  
  170.         Button button2 = (Button)this.findViewById(R.id.button2);
  171.  
  172.         button2.setOnClickListener(new OnClickListener()
  173.  
  174.         {
  175.  
  176.                 public void onClick(View arg0)
  177.  
  178.                 {
  179.  
  180.                         inputBox.setText(inputBox.getText() + "2");
  181.  
  182.                 }
  183.  
  184.         });
  185.  
  186.         Button button3 = (Button)this.findViewById(R.id.button3);
  187.  
  188.         button3.setOnClickListener(new OnClickListener()
  189.  
  190.         {
  191.  
  192.                 public void onClick(View arg0)
  193.  
  194.                 {
  195.  
  196.                         inputBox.setText(inputBox.getText() + "3");
  197.  
  198.                 }
  199.  
  200.         });
  201.  
  202.         Button button4 = (Button)this.findViewById(R.id.button4);
  203.  
  204.         button4.setOnClickListener(new OnClickListener()
  205.  
  206.         {
  207.  
  208.                 public void onClick(View arg0)
  209.  
  210.                 {
  211.  
  212.                         inputBox.setText(inputBox.getText() + "4");
  213.  
  214.                 }
  215.  
  216.         });
  217.  
  218.         Button button5 = (Button)this.findViewById(R.id.button5);
  219.  
  220.         button5.setOnClickListener(new OnClickListener()
  221.  
  222.         {
  223.  
  224.                 public void onClick(View arg0)
  225.  
  226.                 {
  227.  
  228.                         inputBox.setText(inputBox.getText() + "5");
  229.  
  230.                 }
  231.  
  232.         });
  233.  
  234.         Button button6 = (Button)this.findViewById(R.id.button6);
  235.  
  236.         button6.setOnClickListener(new OnClickListener()
  237.  
  238.         {
  239.  
  240.                 public void onClick(View arg0)
  241.  
  242.                 {
  243.  
  244.                         inputBox.setText(inputBox.getText() + "6");
  245.  
  246.                 }
  247.  
  248.         });
  249.  
  250.         Button button7 = (Button)this.findViewById(R.id.button7);
  251.  
  252.         button7.setOnClickListener(new OnClickListener()
  253.  
  254.         {
  255.  
  256.                 public void onClick(View arg0)
  257.  
  258.                 {
  259.  
  260.                         inputBox.setText(inputBox.getText() + "7");
  261.  
  262.                 }
  263.  
  264.         });
  265.  
  266.         Button button8 = (Button)this.findViewById(R.id.button8);
  267.  
  268.         button8.setOnClickListener(new OnClickListener()
  269.  
  270.         {
  271.  
  272.                 public void onClick(View arg0)
  273.  
  274.                 {
  275.  
  276.                         inputBox.setText(inputBox.getText() + "8");
  277.  
  278.                 }
  279.  
  280.         });
  281.  
  282.         Button button9 = (Button)this.findViewById(R.id.button9);
  283.  
  284.         button9.setOnClickListener(new OnClickListener()
  285.  
  286.         {
  287.  
  288.                 public void onClick(View arg0)
  289.  
  290.                 {
  291.  
  292.                         inputBox.setText(inputBox.getText() + "9");
  293.  
  294.                 }
  295.  
  296.         });
  297.  
  298.         Button buttonStar = (Button)this.findViewById(R.id.buttonStar);
  299.  
  300.         buttonStar.setOnClickListener(new OnClickListener()
  301.  
  302.         {
  303.  
  304.                 public void onClick(View arg0)
  305.  
  306.                 {
  307.  
  308.                         inputBox.setText(inputBox.getText() + "*");
  309.  
  310.                 }
  311.  
  312.         });
  313.  
  314.         Button buttonPound = (Button)this.findViewById(R.id.buttonPound);
  315.  
  316.         buttonPound.setOnClickListener(new OnClickListener()
  317.  
  318.         {
  319.  
  320.                 public void onClick(View arg0)
  321.  
  322.                 {
  323.  
  324.                         inputBox.setText(inputBox.getText() + "#");
  325.  
  326.                 }
  327.  
  328.         });
  329.  
  330.     }
  331.  
  332. }
  333.  
  334.  
Parsed in 0.055 seconds, using GeSHi 1.0.8.4


Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3.  
  4. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  5.  
  6.    android:id="@android:id/tabhost"
  7.  
  8.    android:layout_width="fill_parent"
  9.  
  10.    android:layout_height="fill_parent">
  11.  
  12.     <LinearLayout
  13.  
  14.        android:orientation="vertical"
  15.  
  16.        android:layout_width="fill_parent"
  17.  
  18.        android:layout_height="fill_parent">
  19.  
  20.         <TabWidget
  21.  
  22.            android:id="@android:id/tabs"
  23.  
  24.            android:layout_width="fill_parent"
  25.  
  26.            android:layout_height="wrap_content" />
  27.  
  28.         <FrameLayout
  29.  
  30.            android:id="@android:id/tabcontent"
  31.  
  32.            android:layout_width="fill_parent"
  33.  
  34.            android:layout_height="fill_parent">
  35.  
  36.             <AbsoluteLayout
  37.  
  38.                                 android:id="@+id/dialer"
  39.  
  40.                                 android:layout_width="fill_parent"
  41.  
  42.                                 android:layout_height="fill_parent">
  43.  
  44.                                 <EditText
  45.  
  46.                                         android:id="@+id/inputBox"
  47.  
  48.                                         android:layout_width="220px"
  49.  
  50.                                         android:layout_height="50px"
  51.  
  52.                                         android:layout_x="20px"
  53.  
  54.                                         android:layout_y="20px"/>
  55.  
  56.                                 <Button
  57.  
  58.                                         android:id="@+id/go"
  59.  
  60.                                         android:layout_width="50px"
  61.  
  62.                                         android:layout_height="50px"
  63.  
  64.                                         android:layout_x="250px"
  65.  
  66.                                         android:layout_y="20px"
  67.  
  68.                                         android:text="Go"
  69.  
  70.                                         android:textSize="20sp"
  71.  
  72.                                         android:textStyle="bold"/>
  73.  
  74.                                 <Button
  75.  
  76.                                         android:id="@+id/button1"
  77.  
  78.                                         android:layout_width="80px"
  79.  
  80.                                         android:layout_height="70px"
  81.  
  82.                                         android:layout_x="20px"
  83.  
  84.                                         android:layout_y="80px"
  85.  
  86.                                         android:text="1"
  87.  
  88.                                         android:textSize="20sp"
  89.  
  90.                                         android:textStyle="bold"/>
  91.  
  92.                                 <Button
  93.  
  94.                                         android:id="@+id/button2"
  95.  
  96.                                         android:layout_width="80px"
  97.  
  98.                                         android:layout_height="70px"
  99.  
  100.                                         android:layout_x="120px"
  101.  
  102.                                         android:layout_y="80px"
  103.  
  104.                                         android:text="2"
  105.  
  106.                                         android:textSize="20sp"
  107.  
  108.                                         android:textStyle="bold"/>
  109.  
  110.                                 <Button
  111.  
  112.                                         android:id="@+id/button3"
  113.  
  114.                                         android:layout_width="80px"
  115.  
  116.                                         android:layout_height="70px"
  117.  
  118.                                         android:layout_x="220px"
  119.  
  120.                                         android:layout_y="80px"
  121.  
  122.                                         android:text="3"
  123.  
  124.                                         android:textSize="20sp"
  125.  
  126.                                         android:textStyle="bold"/>
  127.  
  128.                                 <Button
  129.  
  130.                                         android:id="@+id/button4"
  131.  
  132.                                         android:layout_width="80px"
  133.  
  134.                                         android:layout_height="70px"
  135.  
  136.                                         android:layout_x="20px"
  137.  
  138.                                         android:layout_y="160px"
  139.  
  140.                                         android:text="4"
  141.  
  142.                                         android:textSize="20sp"
  143.  
  144.                                         android:textStyle="bold"/>
  145.  
  146.                                 <Button
  147.  
  148.                                         android:id="@+id/button5"
  149.  
  150.                                         android:layout_width="80px"
  151.  
  152.                                         android:layout_height="70px"
  153.  
  154.                                         android:layout_x="120px"
  155.  
  156.                                         android:layout_y="160px"
  157.  
  158.                                         android:text="5"
  159.  
  160.                                         android:textSize="20sp"
  161.  
  162.                                         android:textStyle="bold"/>
  163.  
  164.                                 <Button
  165.  
  166.                                         android:id="@+id/button6"
  167.  
  168.                                         android:layout_width="80px"
  169.  
  170.                                         android:layout_height="70px"
  171.  
  172.                                         android:layout_x="220px"
  173.  
  174.                                         android:layout_y="160px"
  175.  
  176.                                         android:text="6"
  177.  
  178.                                         android:textSize="20sp"
  179.  
  180.                                         android:textStyle="bold"/>
  181.  
  182.                                 <Button
  183.  
  184.                                         android:id="@+id/button7"
  185.  
  186.                                         android:layout_width="80px"
  187.  
  188.                                         android:layout_height="70px"
  189.  
  190.                                         android:layout_x="20px"
  191.  
  192.                                         android:layout_y="240px"
  193.  
  194.                                         android:text="7"
  195.  
  196.                                         android:textSize="20sp"
  197.  
  198.                                         android:textStyle="bold"/>
  199.  
  200.                                 <Button
  201.  
  202.                                         android:id="@+id/button8"
  203.  
  204.                                         android:layout_width="80px"
  205.  
  206.                                         android:layout_height="70px"
  207.  
  208.                                         android:layout_x="120px"
  209.  
  210.                                         android:layout_y="240px"
  211.  
  212.                                         android:text="8"
  213.  
  214.                                         android:textSize="20sp"
  215.  
  216.                                         android:textStyle="bold"/>
  217.  
  218.                                 <Button
  219.  
  220.                                         android:id="@+id/button9"
  221.  
  222.                                         android:layout_width="80px"
  223.  
  224.                                         android:layout_height="70px"
  225.  
  226.                                         android:layout_x="220px"
  227.  
  228.                                         android:layout_y="240px"
  229.  
  230.                                         android:text="9"
  231.  
  232.                                         android:textSize="20sp"
  233.  
  234.                                         android:textStyle="bold"/>
  235.  
  236.                                 <Button
  237.  
  238.                                         android:id="@+id/buttonStar"
  239.  
  240.                                         android:layout_width="80px"
  241.  
  242.                                         android:layout_height="70px"
  243.  
  244.                                         android:layout_x="20px"
  245.  
  246.                                         android:layout_y="320px"
  247.  
  248.                                         android:text="*"
  249.  
  250.                                         android:textSize="20sp"
  251.  
  252.                                         android:textStyle="bold"/>
  253.  
  254.                                 <Button
  255.  
  256.                                         android:id="@+id/button0"
  257.  
  258.                                         android:layout_width="80px"
  259.  
  260.                                         android:layout_height="70px"
  261.  
  262.                                         android:layout_x="120px"
  263.  
  264.                                         android:layout_y="320px"
  265.  
  266.                                         android:text="0"
  267.  
  268.                                         android:textSize="20sp"
  269.  
  270.                                         android:textStyle="bold"/>
  271.  
  272.                                 <Button
  273.  
  274.                                         android:id="@+id/buttonPound"
  275.  
  276.                                         android:layout_width="80px"
  277.  
  278.                                         android:layout_height="70px"
  279.  
  280.                                         android:layout_x="220px"
  281.  
  282.                                         android:layout_y="320px"
  283.  
  284.                                         android:text="#"
  285.  
  286.                                         android:textSize="20sp"
  287.  
  288.                                         android:textStyle="bold"/>
  289.  
  290.                         </AbsoluteLayout>
  291.  
  292.             <TextView
  293.  
  294.                android:id="@+id/recent"
  295.  
  296.                android:layout_width="fill_parent"
  297.  
  298.                android:layout_height="fill_parent"
  299.  
  300.                android:text="this is another tab" />
  301.  
  302.             <ListView
  303.  
  304.                android:id="@+id/contacts"
  305.  
  306.                android:layout_width="fill_parent"
  307.  
  308.                android:layout_height="fill_parent" />
  309.  
  310.         </FrameLayout>
  311.  
  312.     </LinearLayout>
  313.  
  314. </TabHost>
  315.  
  316.  
Parsed in 0.018 seconds, using GeSHi 1.0.8.4


Thanks
hajime
Freshman
Freshman
 
Posts: 5
Joined: Mon Nov 16, 2009 12:04 pm

Top

Postby hajime » Sun Nov 29, 2009 11:51 am

I guess nobody knows how?
hajime
Freshman
Freshman
 
Posts: 5
Joined: Mon Nov 16, 2009 12:04 pm

Postby glr » Sun Nov 29, 2009 6:13 pm

Hey,

I tested your code and found it strange that the buttons did not work, using the trackball (F6) worked anyway. I decided to replicate your application and do it my way.

There was no problem in the XML file though I did it differntly in the layout, instead of using an <AbsoluteLayout> and by hand fitting them out I just used a <LinearLayout> and let the buttons scale for themself, I think you will find this much easier and faster. Have a look.

main.xml ->
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  4.  
  5.         android:id="@android:id/tabhost"
  6.  
  7.    android:layout_width="fill_parent"
  8.  
  9.    android:layout_height="fill_parent"
  10.  
  11.         >
  12.  
  13.         <LinearLayout
  14.  
  15.                 android:orientation="vertical"
  16.  
  17.                 android:layout_width="fill_parent"
  18.  
  19.                 android:layout_height="fill_parent"
  20.  
  21.                 >
  22.  
  23.                 <TabWidget
  24.  
  25.                         android:id="@android:id/tabs"
  26.  
  27.                         android:layout_width="fill_parent"
  28.  
  29.                         android:layout_height="wrap_content"
  30.  
  31.                         />
  32.  
  33.                 <FrameLayout
  34.  
  35.                         android:id="@android:id/tabcontent"
  36.  
  37.                         android:layout_width="fill_parent"
  38.  
  39.                         android:layout_height="fill_parent"
  40.  
  41.                         >
  42.  
  43.                                 <!-- DIAL TAB -->
  44.  
  45.                                 <LinearLayout
  46.  
  47.                                         android:id="@+id/dialTab"
  48.  
  49.                                         android:layout_width="fill_parent"
  50.  
  51.                                         android:layout_height="fill_parent"
  52.  
  53.                                         android:orientation="vertical"
  54.  
  55.                                         >
  56.  
  57.                                         <!-- [ Input box ] + [ Button Pad Go ] -->
  58.  
  59.                                         <LinearLayout
  60.  
  61.                                                 android:orientation="horizontal"
  62.  
  63.                                                 android:layout_width="fill_parent"
  64.  
  65.                                                 android:layout_height="wrap_content"
  66.  
  67.                                                 >
  68.  
  69.                                                 <EditText
  70.  
  71.                                                         android:id="@+id/box_input"
  72.  
  73.                                                         android:layout_width="210px"
  74.  
  75.                                                         android:layout_height="wrap_content"
  76.  
  77.                                                         android:textSize="30sp"
  78.  
  79.                                                         android:cursorVisible="false"
  80.  
  81.                                                         />
  82.  
  83.                                                 <Button
  84.  
  85.                                                         android:id="@+id/pad_go"
  86.  
  87.                                                         android:text="Go"
  88.  
  89.                                                         android:layout_width="fill_parent"
  90.  
  91.                                                         android:layout_height="fill_parent"
  92.  
  93.                                                         />
  94.  
  95.                                         </LinearLayout>
  96.  
  97.                                        
  98.  
  99.                                         <!-- Button Pads        [       1       ]       [       2       ]       [       3       ] -->
  100.  
  101.                                         <LinearLayout
  102.  
  103.                                                 android:orientation="horizontal"
  104.  
  105.                                                 android:layout_width="fill_parent"
  106.  
  107.                                                 android:layout_height="fill_parent"
  108.  
  109.                                                 android:layout_weight="1"
  110.  
  111.                                                 >
  112.  
  113.                                                 <Button
  114.  
  115.                                                         android:id="@+id/num_1"
  116.  
  117.                                                         android:text="1"
  118.  
  119.                                                         android:layout_width="wrap_content"
  120.  
  121.                                                         android:layout_height="fill_parent"
  122.  
  123.                                                         android:layout_weight="1"
  124.  
  125.                                                         />
  126.  
  127.                                                 <Button
  128.  
  129.                                                         android:id="@+id/num_2"
  130.  
  131.                                                         android:text="2"
  132.  
  133.                                                         android:layout_width="wrap_content"
  134.  
  135.                                                         android:layout_height="fill_parent"
  136.  
  137.                                                         android:layout_weight="1"
  138.  
  139.                                                         />
  140.  
  141.                                                 <Button
  142.  
  143.                                                         android:id="@+id/num_3"
  144.  
  145.                                                         android:text="3"
  146.  
  147.                                                         android:layout_width="wrap_content"
  148.  
  149.                                                         android:layout_height="fill_parent"
  150.  
  151.                                                         android:layout_weight="1"
  152.  
  153.                                                         />
  154.  
  155.                                         </LinearLayout>
  156.  
  157.                                        
  158.  
  159.                                         <!-- Button Pads        [       4       ]       [       5       ]       [       6       ] -->
  160.  
  161.                                         <LinearLayout
  162.  
  163.                                                 android:orientation="horizontal"
  164.  
  165.                                                 android:layout_width="fill_parent"
  166.  
  167.                                                 android:layout_height="fill_parent"
  168.  
  169.                                                 android:layout_weight="1"
  170.  
  171.                                                 >
  172.  
  173.                                                 <Button
  174.  
  175.                                                         android:id="@+id/num_4"
  176.  
  177.                                                         android:text="4"
  178.  
  179.                                                         android:layout_width="wrap_content"
  180.  
  181.                                                         android:layout_height="fill_parent"
  182.  
  183.                                                         android:layout_weight="1"
  184.  
  185.                                                         />
  186.  
  187.                                                 <Button
  188.  
  189.                                                         android:id="@+id/num_5"
  190.  
  191.                                                         android:text="5"
  192.  
  193.                                                         android:layout_width="wrap_content"
  194.  
  195.                                                         android:layout_height="fill_parent"
  196.  
  197.                                                         android:layout_weight="1"
  198.  
  199.                                                         />
  200.  
  201.                                                 <Button
  202.  
  203.                                                         android:id="@+id/num_6"
  204.  
  205.                                                         android:text="6"
  206.  
  207.                                                         android:layout_width="wrap_content"
  208.  
  209.                                                         android:layout_height="fill_parent"
  210.  
  211.                                                         android:layout_weight="1"
  212.  
  213.                                                         />
  214.  
  215.                                         </LinearLayout>
  216.  
  217.                                        
  218.  
  219.                                         <!-- Button Pads        [       7       ]       [       8       ]       [       9       ] -->
  220.  
  221.                                         <LinearLayout
  222.  
  223.                                                 android:orientation="horizontal"
  224.  
  225.                                                 android:layout_width="fill_parent"
  226.  
  227.                                                 android:layout_height="fill_parent"
  228.  
  229.                                                 android:layout_weight="1"
  230.  
  231.                                                 >
  232.  
  233.                                                 <Button
  234.  
  235.                                                         android:id="@+id/num_7"
  236.  
  237.                                                         android:text="7"
  238.  
  239.                                                         android:layout_width="wrap_content"
  240.  
  241.                                                         android:layout_height="fill_parent"
  242.  
  243.                                                         android:layout_weight="1"
  244.  
  245.                                                         />
  246.  
  247.                                                 <Button
  248.  
  249.                                                         android:id="@+id/num_8"
  250.  
  251.                                                         android:text="8"
  252.  
  253.                                                         android:layout_width="wrap_content"
  254.  
  255.                                                         android:layout_height="fill_parent"
  256.  
  257.                                                         android:layout_weight="1"
  258.  
  259.                                                         />
  260.  
  261.                                                 <Button
  262.  
  263.                                                         android:id="@+id/num_9"
  264.  
  265.                                                         android:text="9"
  266.  
  267.                                                         android:layout_width="wrap_content"
  268.  
  269.                                                         android:layout_height="fill_parent"
  270.  
  271.                                                         android:layout_weight="1"
  272.  
  273.                                                         />
  274.  
  275.                                         </LinearLayout>
  276.  
  277.                                        
  278.  
  279.                                         <!-- Button Pads        [       *       ]       [       0       ]       [       #       ] -->
  280.  
  281.                                         <LinearLayout
  282.  
  283.                                                 android:orientation="horizontal"
  284.  
  285.                                                 android:layout_width="fill_parent"
  286.  
  287.                                                 android:layout_height="fill_parent"
  288.  
  289.                                                 android:layout_weight="1"
  290.  
  291.                                                 >
  292.  
  293.                                                 <Button
  294.  
  295.                                                         android:id="@+id/pad_star"
  296.  
  297.                                                         android:text="*"
  298.  
  299.                                                         android:layout_width="wrap_content"
  300.  
  301.                                                         android:layout_height="fill_parent"
  302.  
  303.                                                         android:layout_weight="1"
  304.  
  305.                                                         />
  306.  
  307.                                                 <Button
  308.  
  309.                                                         android:id="@+id/num_0"
  310.  
  311.                                                         android:text="0"
  312.  
  313.                                                         android:layout_width="wrap_content"
  314.  
  315.                                                         android:layout_height="fill_parent"
  316.  
  317.                                                         android:layout_weight="1"
  318.  
  319.                                                         />
  320.  
  321.                                                 <Button
  322.  
  323.                                                         android:id="@+id/pad_sharp"
  324.  
  325.                                                         android:text="#"
  326.  
  327.                                                         android:layout_width="wrap_content"
  328.  
  329.                                                         android:layout_height="fill_parent"
  330.  
  331.                                                         android:layout_weight="1"
  332.  
  333.                                                         />
  334.  
  335.                                         </LinearLayout>
  336.  
  337.                                        
  338.  
  339.                                 </LinearLayout>
  340.  
  341.                                
  342.  
  343.                                 <!-- RECENT TAB -->
  344.  
  345.                                 <TextView
  346.  
  347.                                         android:id="@+id/recentTab"
  348.  
  349.                                         android:layout_width="fill_parent"
  350.  
  351.                                         android:layout_height="fill_parent"
  352.  
  353.                                         android:text="This is the recent content"
  354.  
  355.                                         />
  356.  
  357.                                
  358.  
  359.                                 <!-- CONTACT TAB -->
  360.  
  361.                                 <TextView
  362.  
  363.                                         android:id="@+id/contactTab"
  364.  
  365.                                         android:layout_width="fill_parent"
  366.  
  367.                                         android:layout_height="fill_parent"
  368.  
  369.                                         android:text="This is the contact content"
  370.  
  371.                                         />
  372.  
  373.                 </FrameLayout>
  374.  
  375.         </LinearLayout>
  376.  
  377. </TabHost>
Parsed in 0.019 seconds, using GeSHi 1.0.8.4


I also added to take away the title bar in the Manifest, looked much better.
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
Parsed in 0.001 seconds, using GeSHi 1.0.8.4


Now for the java file itself. I think the problem lies in the way the tabs are added and the content assigned.
MyTabs.java
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.gyller.myTabs;
  2.  
  3.  
  4.  
  5. //import android.app.Activity;
  6.  
  7. import android.app.TabActivity;
  8.  
  9. import android.os.Bundle;
  10.  
  11.  
  12.  
  13. //Extra import
  14.  
  15. import android.view.View;
  16.  
  17. import android.widget.TabHost;
  18.  
  19. import android.widget.EditText;
  20.  
  21. import android.widget.Button;
  22.  
  23.  
  24.  
  25. public class MyTabs extends TabActivity {
  26.  
  27.         private TabHost mTabHost;
  28.  
  29.        
  30.  
  31.         private Button pad1, pad2, pad3, pad4, pad5, pad6, pad7, pad8, pad9, pad0;
  32.  
  33.         private Button padGo, padStar, padSharp;
  34.  
  35.        
  36.  
  37.         private EditText inputBox;
  38.  
  39.        
  40.  
  41.     @Override
  42.  
  43.     public void onCreate(Bundle savedInstanceState) {
  44.  
  45.         super.onCreate(savedInstanceState);
  46.  
  47.         setContentView(R.layout.main);
  48.  
  49.        
  50.  
  51.         //ASSIGN TABHOST
  52.  
  53.         mTabHost = getTabHost();
  54.  
  55.        
  56.  
  57.         //ADD TAB
  58.  
  59.         mTabHost.addTab(mTabHost.newTabSpec("myTab1").setIndicator("Dial").setContent(R.id.dialTab));
  60.  
  61.         mTabHost.addTab(mTabHost.newTabSpec("myTab2").setIndicator("Recent").setContent(R.id.recentTab));
  62.  
  63.         mTabHost.addTab(mTabHost.newTabSpec("myTab3").setIndicator("Contacts").setContent(R.id.contactTab));
  64.  
  65.        
  66.  
  67.         //SET STARTUP TAB
  68.  
  69.         mTabHost.setCurrentTab(0);
  70.  
  71.        
  72.  
  73.         //ASSIGN NUMERIC BUTTON PAD OBJECT
  74.  
  75.         pad1 = (Button) findViewById(R.id.num_1);
  76.  
  77.         pad2 = (Button) findViewById(R.id.num_2);
  78.  
  79.         pad3 = (Button) findViewById(R.id.num_3);
  80.  
  81.         pad4 = (Button) findViewById(R.id.num_4);
  82.  
  83.         pad5 = (Button) findViewById(R.id.num_5);
  84.  
  85.         pad6 = (Button) findViewById(R.id.num_6);
  86.  
  87.         pad7 = (Button) findViewById(R.id.num_7);
  88.  
  89.         pad8 = (Button) findViewById(R.id.num_8);
  90.  
  91.         pad9 = (Button) findViewById(R.id.num_9);
  92.  
  93.         pad0 = (Button) findViewById(R.id.num_0);
  94.  
  95.        
  96.  
  97.         //ASSIGN MISC BUTTON PAD OBJECT
  98.  
  99.         padGo = (Button) findViewById(R.id.pad_go);
  100.  
  101.         padStar = (Button) findViewById(R.id.pad_star);
  102.  
  103.         padSharp = (Button) findViewById(R.id.pad_sharp);
  104.  
  105.        
  106.  
  107.         //ASIGN TEXT OBJECT
  108.  
  109.         inputBox = (EditText) findViewById(R.id.box_input);
  110.  
  111.        
  112.  
  113.         //NUMERIC BUTTON PAD EVENT
  114.  
  115.         pad1.setOnClickListener(new View.OnClickListener() {
  116.  
  117.                        
  118.  
  119.                         @Override
  120.  
  121.                         public void onClick(View v) {
  122.  
  123.                                 inputBox.setText(inputBox.getText() + "1");
  124.  
  125.                         }
  126.  
  127.                 });
  128.  
  129.        
  130.  
  131.         pad2.setOnClickListener(new View.OnClickListener() {
  132.  
  133.                        
  134.  
  135.                         @Override
  136.  
  137.                         public void onClick(View v) {
  138.  
  139.                                 inputBox.setText(inputBox.getText() + "2");
  140.  
  141.                         }
  142.  
  143.                 });
  144.  
  145.  
  146.  
  147.                 pad3.setOnClickListener(new View.OnClickListener() {
  148.  
  149.                        
  150.  
  151.                         @Override
  152.  
  153.                         public void onClick(View v) {
  154.  
  155.                                 inputBox.setText(inputBox.getText() + "3");
  156.  
  157.                         }
  158.  
  159.                 });
  160.  
  161.                
  162.  
  163.                 pad4.setOnClickListener(new View.OnClickListener() {
  164.  
  165.                        
  166.  
  167.                         @Override
  168.  
  169.                         public void onClick(View v) {
  170.  
  171.                                 inputBox.setText(inputBox.getText() + "4");
  172.  
  173.                         }
  174.  
  175.                 });
  176.  
  177.                
  178.  
  179.                 pad5.setOnClickListener(new View.OnClickListener() {
  180.  
  181.                        
  182.  
  183.                         @Override
  184.  
  185.                         public void onClick(View v) {
  186.  
  187.                                 inputBox.setText(inputBox.getText() + "5");
  188.  
  189.                         }
  190.  
  191.                 });
  192.  
  193.                
  194.  
  195.                 pad6.setOnClickListener(new View.OnClickListener() {
  196.  
  197.                        
  198.  
  199.                         @Override
  200.  
  201.                         public void onClick(View v) {
  202.  
  203.                                 inputBox.setText(inputBox.getText() + "6");
  204.  
  205.                         }
  206.  
  207.                 });
  208.  
  209.                
  210.  
  211.                 pad7.setOnClickListener(new View.OnClickListener() {
  212.  
  213.                        
  214.  
  215.                         @Override
  216.  
  217.                         public void onClick(View v) {
  218.  
  219.                                 inputBox.setText(inputBox.getText() + "7");
  220.  
  221.                         }
  222.  
  223.                 });
  224.  
  225.                
  226.  
  227.                 pad8.setOnClickListener(new View.OnClickListener() {
  228.  
  229.                        
  230.  
  231.                         @Override
  232.  
  233.                         public void onClick(View v) {
  234.  
  235.                                 inputBox.setText(inputBox.getText() + "8");
  236.  
  237.                         }
  238.  
  239.                 });
  240.  
  241.                
  242.  
  243.                 pad9.setOnClickListener(new View.OnClickListener() {
  244.  
  245.                        
  246.  
  247.                         @Override
  248.  
  249.                         public void onClick(View v) {
  250.  
  251.                                 inputBox.setText(inputBox.getText() + "9");
  252.  
  253.                         }
  254.  
  255.                 });
  256.  
  257.  
  258.  
  259.         pad0.setOnClickListener(new View.OnClickListener() {
  260.  
  261.                        
  262.  
  263.                         @Override
  264.  
  265.                         public void onClick(View v) {
  266.  
  267.                                 inputBox.setText(inputBox.getText() + "0");
  268.  
  269.                         }
  270.  
  271.                 });
  272.  
  273.        
  274.  
  275.         //MISC BUTTON EVENT        
  276.  
  277.         padStar.setOnClickListener(new View.OnClickListener() {
  278.  
  279.                        
  280.  
  281.                         @Override
  282.  
  283.                         public void onClick(View v) {
  284.  
  285.                                 inputBox.setText(inputBox.getText() + "*");
  286.  
  287.                         }
  288.  
  289.                 });
  290.  
  291.        
  292.  
  293.         padSharp.setOnClickListener(new View.OnClickListener() {
  294.  
  295.                        
  296.  
  297.                         @Override
  298.  
  299.                         public void onClick(View v) {
  300.  
  301.                                 inputBox.setText(inputBox.getText() + "#");
  302.  
  303.                         }
  304.  
  305.                 });
  306.  
  307.     }
  308.  
  309. }
Parsed in 0.054 seconds, using GeSHi 1.0.8.4
glr
Freshman
Freshman
 
Posts: 9
Joined: Sat Nov 28, 2009 9:09 pm

Postby hajime » Mon Nov 30, 2009 2:13 am

Thank you so much for your help!

Now I'm not sure how to add the ListView back into the 3rd tab. When I try to click on the 3rd tab, the program just crashes. this is where I got the tutorial on how to add ListView into TabHost.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.     private TabSpec tsContacts;
  3.  
  4.     private ListView contactList;
  5.  
  6.  
  7.  
  8.     ...
  9.  
  10.  
  11.  
  12.         tsContacts = mTabHost.newTabSpec("tab_contacts");
  13.  
  14.         tsContacts.setIndicator("Contacts");
  15.  
  16.         tsContacts.setContent(new TabHost.TabContentFactory() {
  17.  
  18.                 public View createTabContent(String tag) {
  19.  
  20.                         ArrayAdapter<String> adapter = new ArrayAdapter<String>
  21.  
  22.                                 (SmartVMS.this, android.R.layout.simple_list_item_1, Names);
  23.  
  24.                         contactList.setAdapter(adapter);
  25.  
  26.                         return contactList;
  27.  
  28.                 }
  29.  
  30.         });
  31.  
  32.  
  33.  
  34.         mTabHost.addTab(tsContacts);  
  35.  
  36.  
  37.  
  38.  
Parsed in 0.037 seconds, using GeSHi 1.0.8.4


and I changed the TextView in the XML to ListView

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2.                     <!-- RECENT TAB -->
  3.  
  4.                     <TextView
  5.  
  6.                         android:id="@+id/recentTab"
  7.  
  8.                         android:layout_width="fill_parent"
  9.  
  10.                         android:layout_height="fill_parent"
  11.  
  12.                         android:text="This is the recent content"
  13.  
  14.                         />
  15.  
  16.                    
  17.  
  18.                     <!-- CONTACT TAB -->
  19.  
  20.                     <ListView
  21.  
  22.                         android:id="@+id/contactTab"
  23.  
  24.                         android:layout_width="fill_parent"
  25.  
  26.                         android:layout_height="fill_parent"
  27.  
  28.                         />
  29.  
  30.           </FrameLayout>
  31.  
  32.  
Parsed in 0.002 seconds, using GeSHi 1.0.8.4
hajime
Freshman
Freshman
 
Posts: 5
Joined: Mon Nov 16, 2009 12:04 pm

Postby hajime » Mon Nov 30, 2009 3:11 am

OK, it's partially resolved. Basically, if you start the program, the first tab is the Dialer tab. If you try to touch the buttons, nothing happens. Then you switch to the 3rd tab, a ListView, and then switch back to the 1st tab, the Dialer. Suddenly, the buttons respond to touch now.

This is very strange. Can anybody explain why it happens this way? Below is my modified Java code.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.         public String[] Names = {"Alice", "Bob", "Charlie"};
  3.  
  4.        
  5.  
  6.         private TabHost mTabHost;
  7.  
  8.    
  9.  
  10.     private Button pad1, pad2, pad3, pad4, pad5, pad6, pad7, pad8, pad9, pad0;
  11.  
  12.     private Button padGo, padStar, padSharp;
  13.  
  14.    
  15.  
  16.     private EditText inputBox;
  17.  
  18.    
  19.  
  20.         private TabSpec tsContacts;
  21.  
  22.         private ListView contactList;
  23.  
  24.    
  25.  
  26.    @Override
  27.  
  28.    public void onCreate(Bundle savedInstanceState) {
  29.  
  30.        super.onCreate(savedInstanceState);
  31.  
  32.        setContentView(R.layout.main);
  33.  
  34.      
  35.  
  36.        //ASSIGN TABHOST
  37.  
  38.        mTabHost = getTabHost();
  39.  
  40.        
  41.  
  42.        //ADD TAB
  43.  
  44.        mTabHost.addTab(mTabHost.newTabSpec("myTab1").setIndicator("Dial").setContent(R.id.dialTab));
  45.  
  46.        mTabHost.addTab(mTabHost.newTabSpec("myTab2").setIndicator("Recent").setContent(R.id.recentTab));
  47.  
  48.        //mTabHost.addTab(mTabHost.newTabSpec("myTab3").setIndicator("Contacts").setContent(R.id.contactTab));
  49.  
  50.        
  51.  
  52.        tsContacts = mTabHost.newTabSpec("tab_contacts");
  53.  
  54.        tsContacts.setIndicator("Contacts");
  55.  
  56.        tsContacts.setContent(new TabHost.TabContentFactory() {
  57.  
  58.         public View createTabContent(String tag) {
  59.  
  60.                 ArrayAdapter<String> adapter = new ArrayAdapter<String>
  61.  
  62.                         (SmartVMS.this, android.R.layout.simple_list_item_1, Names);
  63.  
  64.                 contactList.setAdapter(adapter);
  65.  
  66.                 return contactList;
  67.  
  68.         }
  69.  
  70.        });
  71.  
  72.        mTabHost.addTab(tsContacts);
  73.  
  74.        
  75.  
  76.        //SET STARTUP TAB
  77.  
  78.        mTabHost.setCurrentTab(0);
  79.  
  80.      
  81.  
  82.        // FIND LISTVIEW
  83.  
  84.        contactList = (ListView)findViewById(R.id.contactTab);
  85.  
  86.        
  87.  
  88.        //ASSIGN NUMERIC BUTTON PAD OBJECT
  89.  
  90.        pad1 = (Button) findViewById(R.id.num_1);
  91.  
  92.        pad2 = (Button) findViewById(R.id.num_2);
  93.  
  94.        pad3 = (Button) findViewById(R.id.num_3);
  95.  
  96.  
  97.  
  98. ....
  99.  
  100.  
Parsed in 0.043 seconds, using GeSHi 1.0.8.4
hajime
Freshman
Freshman
 
Posts: 5
Joined: Mon Nov 16, 2009 12:04 pm

Postby hajime » Mon Nov 30, 2009 3:24 am

Found a quick hack for this:
Basically call setCurrentTab on the List tab first, and then call it again on the Dialer tab. Code pasted below:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1.  
  2.         public String[] Names = {"Alice", "Bob", "Charlie"};
  3.  
  4.        
  5.  
  6.         private TabHost mTabHost;
  7.  
  8.    
  9.  
  10.     private Button pad1, pad2, pad3, pad4, pad5, pad6, pad7, pad8, pad9, pad0;
  11.  
  12.     private Button padGo, padStar, padSharp;
  13.  
  14.    
  15.  
  16.     private EditText inputBox;
  17.  
  18.    
  19.  
  20.         private TabSpec tsContacts;
  21.  
  22.         private ListView contactList;
  23.  
  24.    
  25.  
  26.    @Override
  27.  
  28.    public void onCreate(Bundle savedInstanceState) {
  29.  
  30.        super.onCreate(savedInstanceState);
  31.  
  32.        setContentView(R.layout.main);
  33.  
  34.      
  35.  
  36.        //ASSIGN TABHOST
  37.  
  38.        mTabHost = getTabHost();
  39.  
  40.        
  41.  
  42.        // FIND LISTVIEW
  43.  
  44.        contactList = (ListView)findViewById(R.id.contactTab);
  45.  
  46.        
  47.  
  48.        //ADD TAB
  49.  
  50.        mTabHost.addTab(mTabHost.newTabSpec("myTab1").setIndicator("Dial").setContent(R.id.dialTab));
  51.  
  52.        mTabHost.addTab(mTabHost.newTabSpec("myTab2").setIndicator("Recent").setContent(R.id.recentTab));
  53.  
  54.        //mTabHost.addTab(mTabHost.newTabSpec("myTab3").setIndicator("Contacts").setContent(R.id.contactTab));
  55.  
  56.        
  57.  
  58.        mTabHost.addTab(mTabHost.newTabSpec("tab_contacts").setIndicator("Contacts").setContent(
  59.  
  60.                    new TabHost.TabContentFactory() {
  61.  
  62.                 public View createTabContent(String tag) {
  63.  
  64.                         ArrayAdapter<String> adapter = new ArrayAdapter<String>
  65.  
  66.                                 (SmartVMS.this, android.R.layout.simple_list_item_1, Names);
  67.  
  68.                         contactList.setAdapter(adapter);
  69.  
  70.                         return contactList;
  71.  
  72.                 }
  73.  
  74.            }));
  75.  
  76.        
  77.  
  78.        //SET STARTUP TAB
  79.  
  80.        mTabHost.setCurrentTab(2);
  81.  
  82.        mTabHost.setCurrentTab(0);
  83.  
  84.        
  85.  
  86.        //ASSIGN NUMERIC BUTTON PAD OBJECT
  87.  
  88.        pad1 = (Button) findViewById(R.id.num_1);
  89.  
  90.        pad2 = (Button) findViewById(R.id.num_2);
  91.  
  92.        pad3 = (Button) findViewById(R.id.num_3);
  93.  
  94.  
  95.  
  96. ...
  97.  
  98.  
Parsed in 0.043 seconds, using GeSHi 1.0.8.4
hajime
Freshman
Freshman
 
Posts: 5
Joined: Mon Nov 16, 2009 12:04 pm

Top

Return to View, Layout & Resource Problems

Who is online

Users browsing this forum: No registered users and 3 guests