Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 包含tabhost和viewpager的片段不';不要重叠列表片段_Android_Android Fragments_Android Tabhost_Android Listfragment - Fatal编程技术网

Android 包含tabhost和viewpager的片段不';不要重叠列表片段

Android 包含tabhost和viewpager的片段不';不要重叠列表片段,android,android-fragments,android-tabhost,android-listfragment,Android,Android Fragments,Android Tabhost,Android Listfragment,我不知道如何解决这个错误我被困了3天帮我解决。我没有得到任何可以记录和显示的错误,这已经变得不可能了 MyListFragment.java this extends ListFragment and onListItemClick() I need to migrate to another two Fragments which should be displayed over this ListFragment. public void onListItemClick(列表视图l、视图v

我不知道如何解决这个错误我被困了3天帮我解决。我没有得到任何可以记录和显示的错误,这已经变得不可能了

MyListFragment.java this extends ListFragment and onListItemClick() I need to migrate to another two Fragments which should be displayed over this ListFragment.
public void onListItemClick(列表视图l、视图v、整数位置、长id){
Log.d(“单击列表”、“单击是”);
//字符串clickedDetail=(字符串)l.getItemAtPosition(位置);
/*
*第二个片段尚未加载。
*按FragmentTransaction加载MyDetailFragment,并传递
*数据通过束从当前片段传输到第二个片段。
*/
MyDetailFragment MyDetailFragment=新的MyDetailFragment();
Bundle=新Bundle();
//bundle.putString(“关键字详细信息”,单击详细信息);
myDetailFragment.setArguments(bundle);
Log.d(“ListCLicked1”、“单击是”);
碎片事务碎片事务=
getChildFragmentManager().beginTransaction();
Log.d(“ListCLicked2”,“Yes Clicked”);
fragmentTransaction.add(R.id.tablistfragment,new MyDetailFragment());
Log.d(“ListCLicked3”,“Yes Clicked”);
fragmentTransaction.commit();
}
MyDetailFragment.java是一个膨胀为detailfragment.xml的片段,包含两个要重叠在MyListFragment上的片段。MyListFragment包含加载程序,它记录我的电话簿联系人,并在单击任何列表项时从中形成一个列表,我需要获取包含联系人详细信息的片段。帮助!!!!!!!!!
package com.example.crush_crm;
导入android.os.Bundle;
导入android.os.StrictMode;
导入android.support.v4.app.Fragment;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
公共类MyDetailFragment扩展了片段{
联系方式;
公共字符串号、callnumber、phn、emailtext;
视图;
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
Log.d(“MyDetailFragment1”,“在这里”);
如果(android.os.Build.VERSION.SDK_INT>9){
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
}
视图=充气机。充气(R.layout.detailfragment,null);
Log.d(“MyDetailFragment”,“在这里”);
返回视图;
}   
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
}
}
MyDetailActivity扩展FragmentActivity初始化Tabhost和Viewpager。执行时不会调用此活动,甚至不会给出任何错误。我执行ContactHistory,它会膨胀tablayout.xml,其中指定工具:context=“.MyDetailActivity”
导入android.content.Intent;
导入android.net.Uri;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.view.ViewPager.OnPageChangeListener;
导入android.util.Log;
导入android.view.view;
导入android.widget.TabHost;
导入android.widget.TabHost.OnTabChangeListener;
公共类MyDetailActivity扩展了FragmentActivity实现了OnTabChangeListener、OnPageChangeListener{
公众接触史;
联系方式;
公共字符串号、callnumber、phn、emailtext;
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.d(“我在”,“主要”);
his=(ContactHistory)getSupportFragmentManager().findFragmentById(R.id.oppofragment);
his.mTabHost1.setup();
MyDetailActivity.AddTab(this,his.mTabHost1,his.mTabHost1.newTabSpec(“历史”).setIndicator(“历史”);
MyDetailActivity.AddTab(this,his.mTabHost1,his.mTabHost1.newTabSpec(“机会”).setIndicator(“机会”);
his.mAdapter=new TabsPagerAdapter(this.getSupportFragmentManager());
//片段和ViewPager初始化
日志d(“添加标签1”、“完成”);
his.mViewPager1.setAdapter(his.mAdapter);
his.mViewPager1.setOnPageChangeListener(MyDetailActivity.this);
日志d(“添加选项卡2”、“完成”);
his.mTabHost1.setOnTabChangedListener(this);
}
私有静态void AddTab(MyDetailActivity活动,TabHost TabHost,TabHost.TabSpec TabSpec){
tabSpec.setContent(新的MyTabFactory(活动));
tabHost.addTab(tabSpec);
}
已更改的公用void onTabChanged(字符串标记){
int pos=his.mTabHost1.getCurrentTab();
his.mViewPager1.setCurrentItem(pos);
}
@凌驾
公共无效onPageScrollStateChanged(int arg0){
}
//管理页面更改,并将其与选项卡同步
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
int pos=his.mViewPager1.getCurrentItem();
his.mTabHost1.setCurrentTab(pos);
}
@凌驾
已选择页面上的公共无效(int arg0){
}
公共无效赎回法(视图五)
{
Log.d(“hiiiiii”,“我在主楼”);
con=(ContactDetails)getSupportFragmentManager().findFragmentById(R.id.contactfragment);
number=con.phone.getText().toString();
日志d(“电话号码”,数字);
callnumber=“电话:”+号码;
日志d(“电话号码”,电话号码);
Intent callButton=newintent(Intent.ACTION_调用,Uri.parse(callnumber));
日志d(“不工作”、“意图问题”);
启动触觉(呼叫按钮);
}
公开作废邮件(视图五)
{
con=(ContactDetails)getSupportFragmentManager().findFragmentById(R.id.contactfragment);
emailtext=con.textemail.getText().toString();
意向emailIntent=新意向(Intent.ACTION\u SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL,新字符串[]{emailtext});
public void onListItemClick(ListView l, View v, int position, long id) {

        Log.d("ListCLicked","Yes Clicked");

        //String clickedDetail = (String)l.getItemAtPosition(position);

            /*
             * The second fragment not yet loaded. 
             * Load MyDetailFragment by FragmentTransaction, and pass 
             * data from current fragment to second fragment via bundle.
             */
            MyDetailFragment myDetailFragment = new MyDetailFragment();
            Bundle bundle = new Bundle();
            //bundle.putString("KEY_DETAIL", clickedDetail);
            myDetailFragment.setArguments(bundle);
            Log.d("ListCLicked1","Yes Clicked");
            FragmentTransaction fragmentTransaction =
                    getChildFragmentManager().beginTransaction();
            Log.d("ListCLicked2","Yes Clicked");
            fragmentTransaction.add(R.id.tablistfragment, new MyDetailFragment());
            Log.d("ListCLicked3","Yes Clicked");
            fragmentTransaction.commit();


    }

MyDetailFragment.java is Fragment that an inflate to detailfragment.xml containg two fragments to be overlapped over the MyListFragment. MyListFragment is containg loaders and which log my phonebook contacts and form a list out of them on click of any List Item I need to get the fragment containing the details about the contact.Help Help Help Help help Help!!!!!!!!!

package com.example.crush_crm;

import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;





public class MyDetailFragment extends Fragment {


    ContactDetails con;

    public String number,callnumber,phn,emailtext;
    View view;

    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
    {

        Log.d("MyDetailFragment1","Here it is");
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }
        view=inflater.inflate(R.layout.detailfragment, null);

        Log.d("MyDetailFragment","Here it is");




        return view ;

    }   

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);


    }


}

MyDetailActivity extends FragmentActivity initialising the Tabhost and Viewpager.This activity doesn't get called when I execute even gives no error.I execute ContactHistory which inflates tablayout.xml , where I specify tools:context=".MyDetailACtivity" 



import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;







public class MyDetailActivity extends FragmentActivity implements OnTabChangeListener,OnPageChangeListener{

    public ContactHistory his;

    ContactDetails con;

    public String number,callnumber,phn,emailtext;


    public void OnCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);


        Log.d("hiiiiiiii i m in ","main");
        his=(ContactHistory)getSupportFragmentManager().findFragmentById(R.id.oppofragment);
        his.mTabHost1.setup();


        MyDetailActivity.AddTab(this, his.mTabHost1, his.mTabHost1.newTabSpec("History").setIndicator("History"));
        MyDetailActivity.AddTab(this, his.mTabHost1, his.mTabHost1.newTabSpec("Opportunity").setIndicator("Opportunity"));

        his.mAdapter = new TabsPagerAdapter(this.getSupportFragmentManager());
        // Fragments and ViewPager Initialization
        Log.d("Tabs Added1 ","Done");

       his.mViewPager1.setAdapter(his.mAdapter);
       his.mViewPager1.setOnPageChangeListener(MyDetailActivity.this);
       Log.d("Tabs Added2 ","Done");
       his.mTabHost1.setOnTabChangedListener(this);

    }


    private static void AddTab(MyDetailActivity activity, TabHost tabHost, TabHost.TabSpec tabSpec) {
        tabSpec.setContent(new MyTabFactory(activity));
        tabHost.addTab(tabSpec);
    }
    public void onTabChanged(String tag) {
        int pos = his.mTabHost1.getCurrentTab();
        his.mViewPager1.setCurrentItem(pos);
    }
    @Override
    public void onPageScrollStateChanged(int arg0) {
    }

    // Manages the Page changes, synchronizing it with Tabs
    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        int pos = his.mViewPager1.getCurrentItem();
        his.mTabHost1.setCurrentTab(pos);
    }

    @Override
        public void onPageSelected(int arg0) {
    }
    public void CallAct(View v)
    {
        Log.d("Hiiiiiiii","i m in main");
        con=(ContactDetails)getSupportFragmentManager().findFragmentById(R.id.contactfragment);

        number=con.phone.getText().toString();
        Log.d("Phone Number",number);
         callnumber="tel:"+number;
                Log.d("Phone Number",callnumber);

                Intent callButton=new Intent(Intent.ACTION_CALL,Uri.parse(callnumber));
                Log.d("Not Working","Intent Issue");
                startActivity(callButton);





        }

    public void MailAct(View v)
    {
        con=(ContactDetails)getSupportFragmentManager().findFragmentById(R.id.contactfragment);
        emailtext=con.textemail.getText().toString();

                Intent emailIntent=new Intent(Intent.ACTION_SEND);
                emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {emailtext});
                emailIntent.setType("message/rfc822");
                startActivity(emailIntent);



        }


}

ContactHistory.java ContactHistory just gives an inflate call to the tablayout and finds the ids for the tabhost and viewpagers.



import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;

public class ContactHistory extends Fragment {

    View view;
    public TabsPagerAdapter mAdapter;
    public ViewPager mViewPager;
    public TabHost mTabHost;

    public View onCreateView(LayoutInflater inflator,ViewGroup container,Bundle saveInstanceState)
    {
        Log.d("ContactHistory","History Oppurutnity");
        view=inflator.inflate(R.layout.tablayout,container,false);
        Log.d("onCreateView","Here I m OKKKKKKKKKKKKKKKKKKKKKKKKKK");
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        mViewPager = (ViewPager)view.findViewById(R.id.viewpager);
        mTabHost = (TabHost) view.findViewById(android.R.id.tabhost);
        Log.d("I m not ohk","I go from here");
        return view;
    }

}

tablayout.xml this layout I used in another project works very fine without any problem even it gets displayed but here I need to overlap it over the Listfragment.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

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

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:orientation="horizontal" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0" />

            <android.support.v4.view.ViewPager
                android:id="@+id/viewpager"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="top" />
        </LinearLayout>
    </TabHost>

</RelativeLayout>

detailfragment.xml contains the two fragments the ContactDetails fragment works very fine but the fragment ContactHistory with tabhost and ViewPager doesn't get displayed and I also don't get any error
<?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" >

    <fragment
        android:id="@+id/contactfragment"
        android:name="com.example.crush_crm.ContactDetails"
        android:layout_width="match_parent"
        android:layout_height="230dp"
         />

    <fragment
        android:id="@+id/oppofragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/contactfragment"
        class="com.example.crush_crm.ContactHistory" />

</RelativeLayout>
public class MyDetailFragment extends Fragment {
public class MyDetailView extends LinearLayout {