Как передать намерение внутри TabHost во фрагменте в Android

Я использую фрагмент, и мой вопрос: как открыть класс Test1 и Test2 во фрагменте. На самом деле я использую намерение для перенаправления, но я хочу использовать фрагмент, а не действие. Как это возможно?

  I need to two tab. 1)App 2)Application. and Successfully Create both tab. but using with fragment Like TabHost. 

Пожалуйста, предложите мне. Мой код Ниже,

Мой код,

            import android.app.Fragment;
            import android.os.Bundle;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.ViewGroup;
            import android.widget.AnalogClock;
            import android.widget.TabHost;

            import com.example.app.R;

            public class CallFragment extends Fragment implements OnTabChangeListener{
                private TabHost tabHost = null;
                View rootView = null;
                TabHost.TabSpec spec, spec1;

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                    /**
                     * Inflate the layout for this fragment
                     */
                    View rootView = inflater.inflate(R.layout.call_fragment, container,
                            false);

                    tabHost = (TabHost) rootView.findViewById(R.id.tab_host);
                    tabHost.setup();
                    spec = tabHost.newTabSpec("tagApp");
                    spec1 = tabHost.newTabSpec("tagApplication");
                    spec.setIndicator("App");
                    spec.setContent(R.id.test1);

                    spec1.setIndicator("Application");
                    spec1.setContent(R.id.test2);

                    tabHost.setOnTabChangedListener(this);
                    tabHost.addTab(spec);
                    tabHost.addTab(spec1);
                    return rootView;
                }

        @Override
            public void onTabChanged(String tabId) {
                // TODO Auto-generated method stub
                if ("tagApp".equals(tabId)) {

                    Intent intent = new Intent(getActivity(), Test1.class);
                    getActivity().startActivity(intent);
                }
                if ("tagApplication".equals(tabId)) {
                    Intent intent = new Intent(getActivity(), Test2.class);
                    getActivity().startActivity(intent);
                }
            }
            }

    Test1.java file,
    public class Test1 extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.test1);
        }
    }

    Test2.java file,
    public class Test2 extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.test2);
        }
    }

    And call_fragment.xml file is,

        <?xml version="1.0" encoding="utf-8"?>
        <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/tab_host"
            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"
                    android:orientation="horizontal" />

                <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                 <include layout="@layout/test1" />

                 <include layout="@layout/test2" />
            </FrameLayout>
            </LinearLayout>

        </TabHost>

    test1.xml file,
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/test1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tag 1" />

    </LinearLayout>

    test2.xml file,
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/test2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tag 2" />

    </LinearLayout>

person Android    schedule 29.10.2014    source источник
comment
Ваш вопрос довольно неясен имхо. Я понял: вы хотите начать другое действие (например, перенаправление), когда определенная вкладка выбрана/активирована, правильно?   -  person MABVT    schedule 29.10.2014
comment
Да, я хочу перенаправлять каждый раз, когда нажимаю на выбранную вкладку.   -  person Android    schedule 29.10.2014
comment
Я использую этот код, он открыт, новая активность, но он открыт во фрагменте, тогда что для этого использовать? { Намерение намерение = новое намерение (getActivity(), Test1.class); getActivity (). startActivity (намерение); } if (tagApplication.equals(tabId)) { Намерение намерения = новое намерение (getActivity(), Test2.class); getActivity (). startActivity (намерение); } }   -  person Android    schedule 29.10.2014
comment
Пожалуйста, разместите этот код как обновление в своем посте, чтобы все могли его прочитать.   -  person MABVT    schedule 29.10.2014


Ответы (1)


Невозможно вернуть Intent, если ожидается возвращаемое значение типа "View". Подойдите к этому по-другому.

Для вкладки перенаправления верните пустое представление return new View(/* whatever parameters you want to set */);.

Затем зарегистрируйте onTabChangeListener в TabHost, что позволит реагировать на выбор вкладок. Для индекса вкладки перенаправления создайте и запустите свое намерение, в результате чего будет запущено новое действие.

См. это: Как использовать TabHost.OnTabChangeListener в Android? для существующий пример.

person MABVT    schedule 29.10.2014