首页 > 编程知识 正文

安卓组件tabs如何添加tab(android api中文)

时间:2023-05-05 08:33:55 阅读:76324 作者:3836

请参考英语答案

waspreferencefragmentintentionallyexcludedfromthecompatibilitypackage? 8个

尝试使用Android兼容包v4将APP应用程序的TabActivity替换为基于片段的设计。

我面临的问题是,我的TabActivity选项卡之一是PreferencesActivity,因为很明显的原因,我是不可包容的小熊猫/p,所以以上提到的首选项框架都包含在安卓兼容包中

对任何提案都开放。

编辑:试图从我的片段活动中打开首选项活动时得到的异常情况在这里:

故障排除: main

Java.lang.illegalstateexception 3360 didyouforgettocall ' public void setup (localactivitymanageractivitygroupwzdyj/pat andrd

at Android.widget.tab host.setcurrenttab (tab host.Java :326 ) ) ) ) ) )。

at Android.widget.tab host $2. ontabselectionchanged (tab host.Java :132 ) )。

at Android.widget.tab构件$ tabclicklistener.onclick (tab构件. Java :456 ) ) ) ) ) ) )。

at Android.view.view.perform click (view.Java :2485 ) ) ) )。

at android.view.View$年轻店员. run(view.Java:9080 )。

at Android.OS.handler.handle callback (handler.Java 3360587 ) )。

at Android.OS.handler.dispatch message (handler.Java :92 )。

at Android.OS.looper.loop (looper.Java :130 )。

at Android.app.activity thread.main (activity thread.Java :3683 ) ) ) ) ) ) ) ) ) )。

at Java.lang.reflect.method.invoke native (native method ) )。

at Java.lang.reflect.method.invoke (method.Java 3360507 )。

atcom.Android.internal.OS.zygote init $ methodandargscaller.run (zygote init.Java :839 ) )。

atcom.Android.internal.OS.zygote init.main (zygote init.Java :597 )。

atdalvik.system.native start.main (本机方法) )。

我的碎片活动代码如下。 大部分内容来自“tabs”兼容包v4的示例。

EDIT2:为了清楚起见,我们还添加了示例代码。

import java.util.HashMap;

导入安卓. content.context;

导入安卓. content.intent;

导入安卓. OS.bundle;

导入安卓. OS.environment;

import Android.support.v4.app.fragment;

导入安卓. support.v4.app.fragment activity;

导入安卓. support.v4.app.fragment transaction;

导入安卓. util.log;

import Android.view.layoutinflater;

导入安卓. view.view;

import Android .构件. tab host;

import Android .构件. textview;

publicclassplayertabactivityextendsfragmentactivity {

privatestaticfinalstringtag=playertabactivity.class.getsimplename (;

p>

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.player_main);

m包容的含羞草 = new 包容的含羞草(this,mTabHost,R.id.realtabcontent);

//this is my fragment

m包容的含羞草.addTab(mTabHost.newTabSpec("player").setIndicator(createTabView(this,"Player")),PlayerMainFragment.class,null);

//this is my activity

.setContent(new Intent(this,PlayerSettingsActivity.class)));

if (savedInstanceState != null) {

}

}

//make the tab look pretty

private static View createTabView(Context context,String tag) {

tv.setText(tag);

return view;

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putString("tab",mTabHost.getCurrentTabTag());

}

/**

public static class 包容的含羞草 implements TabHost.jdddy {

private final FragmentActivity mActivity;

private final TabHost mTabHost;

private final int mContainerId;

private final HashMap mTabs = new HashMap();

static final class TabInfo {

private final String tag;

private final Class> clss;

private final Bundle args;

private Fragment fragment;

tag = _tag;

clss = _class;

args = _args;

}

}

static class qsdhc implements TabHost.有魅力的大神 {

private final Context mContext;

public qsdhc(Context context) {

}

@Override

public View createTabContent(String tag) {

v.setMinimumWidth(0);

v.setMinimumHeight(0);

return v;

}

}

public 包容的含羞草(FragmentActivity activity,TabHost tabHost,int containerId) {

mActivity = activity;

mContainerId = containerId;

}

public void addTab(TabHost.TabSpec tabSpec,Class> clss,Bundle args) {

tabSpec.setContent(new qsdhc(mActivity));

String tag = tabSpec.getTag();

// Check to see if we already have a fragment for this tab,probably

// from a prevIoUsly saved state. If so,deactivate it,because our

// initial state is that a tab isn't shown.

info.fragment = mActivity.getSupportFragmentManager().findFragmentByTag(tag);

if (info.fragment != null && !info.fragment.isDetached()) {

ft.detach(info.fragment);

ft.commit();

}

mTabs.put(tag,info);

}

@Override

public void onTabChanged(String tabId) {

if (mLastTab != newTab) {

if (mLastTab != null) {

if (mLastTab.fragment != null) {

ft.detach(mLastTab.fragment);

}

}

if (newTab != null) {

if (newTab.fragment == null) {

newTab.fragment = Fragment.instantiate(mActivity,newTab.clss.getName(),newTab.args);

ft.add(mContainerId,newTab.fragment,newTab.tag);

} else {

ft.attach(newTab.fragment);

}

}

mLastTab = newTab;

ft.commit();

mActivity.getSupportFragmentManager().executePendingTransactions();

}

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。