Search code examples
androidandroid-tabhostandroid-tabactivityandroid-windowmanager

how to make the method onWindowFocusChanged(boolean) to true(or call) in one tabs of tablayout in android?


how to make the method onWindowFocusChanged(boolean) to true(or call) in one tabs of tablayout in android..

Explanation:

In tablayout onWindowFocusChanged() called automatically in default activity (true), But when we click/touch on to the next tab ( which call another activity) not able to call the onWindowFocusChanged() !!!!!! how to call onWindowFocusChanged() in second tab?

source code:

public class TabTestActivity extends TabActivity {

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.main);



            Resources res = getResources();

            TabHost tabHost = getTabHost();  

            TabHost.TabSpec spec;  

            Intent intent;  



            // Create an Intent to launch an Activity for the tab (to be reused)

            intent = new Intent().setClass(this, TabOne.class);



            // Initialize a TabSpec for each tab and add it to the TabHost

            spec = tabHost.newTabSpec("TabOne").setIndicator("TabOne",

                              res.getDrawable(R.drawable.ic_tab_One))

                          .setContent(intent);

            tabHost.addTab(spec);



            // Do the same for the other tabs

            intent = new Intent().setClass(this, TabTwo.class);

            spec = tabHost.newTabSpec("TabTwo").setIndicator("TabTwo",

                              res.getDrawable(R.drawable.ic_tab_az))

                          .setContent(intent);

            tabHost.addTab(spec);
            //tabHost.setCurrentTab(2);

        }


                  public void onWindowFocusChanged(boolean hasFocus) {

                    // TODO Auto-generated method stub

                     Toast.makeText(this, ""+hasFocus , Toast.LENGTH_LONG).show();

                       super.onWindowFocusChanged(hasFocus);

                    }
  }
 -----------------------------------------------------------------------------------------------------   

    public class TabOne extends Activity {

         public void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);

                TextView textview = new TextView(this);

                textview.setText("This is the Coll tab");

                setContentView(textview);

            }

        @Override

        public void onWindowFocusChanged(boolean hasFocus) {

            // TODO Auto-generated method stub



            Toast.makeText(this, "On window One"+hasFocus , Toast.LENGTH_LONG).show();

            super.onWindowFocusChanged(hasFocus);

        }

    }

--------------------------------------------------------------------------    

    public class TabTwo extends Activity {

         public void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);



                TextView textview = new TextView(this);

                textview.setText("This is the Coll tab");

                setContentView(textview);

            }



        @Override

        public void onWindowFocusChanged(boolean hasFocus) {

            // TODO Auto-generated method stub

            Toast.makeText(this, "On window TabTwo"+hasFocus , Toast.LENGTH_LONG).show();

            super.onWindowFocusChanged(hasFocus);


        }

  }

TabTwo's (2ndTab) onWindowFocusChanged not called while TabTwo activity runs please give the solution. I tried to provide tabHost.setFocusable(true); I doesn't worked!!!


Solution

  • Tabs are basically deprecated. You should use fragments instead. This will clearly handle your issue.

    See: https://stackoverflow.com/questions/9714650/converting-tabactivity-into-fragmentactivity for an example of how to do this.