我目前正在为我的标签设置内容,例如
TabSpec spec1=tabHost.newTabSpec("TAB 1");
spec1.setContent(R.id.tab1);
spec1.setIndicator("", ressources.getDrawable(R.drawable.image_large));
但是如何将活动设置为此
的内容spec1.setContent(ProfileMenuAllTopics.this,MainActivity.class);
它说它不适用于此
编辑: 你能帮忙解决这个问题吗
public class ProfileMenuAllTopics extends Fragment {
SessionManager session;
JSONObject jsonobject,jsonobjectTwo;
JSONArray jsonarray,jsonarrayTwo;
ListView listview,listviewTwo;
ListViewAdapter adapter,adapterTwo;
ProgressDialog mProgressDialog;
ArrayList<HashMap<String, String>> arraylist;
ArrayList<HashMap<String, String>> arraylistTwo;
static String TOPICID = "topicID";
static String RANK = "topicName";
static String COUNTRY = "topicPhone";
static String TOPICPHONE = "topicPhone";
static String POPULATION = "topicDesc";
static String FLAG = "topicImage";
static String TALKTIME = "balanceTalkTime";
private static String KEY_SUCCESS = "success";
RelativeLayout webViewHolderLayout,searchRelativeView,searchRelativeViewMyLists;
String UserID;
ImageView profile_btn;
private View view;
private TransparentProgressDialog pd;
private Handler h;
private Runnable r;
String tabClicked;
JSONObject whatAreYouLooking;
JSONObject myTopicsList;
Button load_more_btn;
Button loadMoreMyTopics;
int maxRecordsHere = 10;
int maxMyRecordsHere = 10;
TabHost tabHost;
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi,SetJavaScriptEnabled")
@SuppressWarnings("deprecation")
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
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.profile_menu_topics_list, null);
h = new Handler();
pd = new TransparentProgressDialog(inflater.getContext(), R.drawable.myspinner);
r =new Runnable() {
@Override
public void run() {
if (pd.isShowing()) {
pd.dismiss();
}
}
};
session = new SessionManager(inflater.getContext());
session.checkLogin();
HashMap<String, String> user = session.getUserDetails();
UserID = user.get(SessionManager.KEY_USER_ID);
Resources ressources = getResources();
load_more_btn = (Button) view.findViewById(R.id.loadMoreTopics);
loadMoreMyTopics = (Button) view.findViewById(R.id.loadMoreMyTopics);
tabHost=(TabHost)view.findViewById(R.id.tabHost);
webViewHolderLayout = (RelativeLayout) view.findViewById(R.id.webViewHolder);
searchRelativeView = (RelativeLayout) view.findViewById(R.id.searchRelativeView);
searchRelativeViewMyLists = (RelativeLayout) view.findViewById(R.id.searchRelativeViewMyLists);
Bundle args = getArguments();
tabHost.setup();
TabSpec spec1=tabHost.newTabSpec("TAB 1");
spec1.setContent(R.id.tab1);
spec1.setIndicator("", ressources.getDrawable(R.drawable.topics_image_large));
TabSpec spec2=tabHost.newTabSpec("TAB 2");
spec2.setIndicator("", ressources.getDrawable(R.drawable.my_calls_large));
spec2.setContent(R.id.tab2);
TabSpec spec3=tabHost.newTabSpec("TAB 3");
spec3.setContent(R.id.tab3);
spec3.setIndicator("", ressources.getDrawable(R.drawable.how_it_works_large));
tabHost.addTab(spec1);
tabHost.addTab(spec2);
tabHost.addTab(spec3);
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#2AC4EA"));
}
tabHost.getTabWidget().setCurrentTab(0);
tabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#FFFFFF"));
whatAreYouLookingFor();
myTopicsTab();
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String arg0) {
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#2AC4EA"));
}
tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#FFFFFF"));
int selectTabHere = tabHost.getCurrentTab();
if(selectTabHere==0){
pd.show();
tabValueZero();
h.postDelayed(r,5000);
}else if(selectTabHere==1){
pd.show();
tabValueOne();
h.postDelayed(r,5000);
}else if(selectTabHere==2){
pd.show();
tabValueTwo();
h.postDelayed(r,5000);
}
}
});
load_more_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pd.show();
maxRecordsHere = maxRecordsHere + 10;
getPaging(whatAreYouLooking,maxRecordsHere);
h.postDelayed(r,5000);
}
});
loadMoreMyTopics.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pd.show();
maxMyRecordsHere = maxMyRecordsHere + 10;
getPagingMyTopics(whatAreYouLooking,maxRecordsHere);
h.postDelayed(r,5000);
}
});
tabValueZero();
return view;
}
private void whatAreYouLookingFor(){
UserFunctions userFunction = new UserFunctions();
whatAreYouLooking = userFunction.getTopicsList();
getPaging(whatAreYouLooking,maxRecordsHere);
}
private void myTopicsTab(){
UserFunctions userFunction = new UserFunctions();
myTopicsList = userFunction.getMyTabTopicsList(UserID);
getPagingMyTopics(myTopicsList,maxMyRecordsHere);
}
public void getPaging(JSONObject whatAreYouLooking,int maxRecords){
arraylist = new ArrayList<HashMap<String, String>>();
try {
if (whatAreYouLooking.getString(KEY_SUCCESS) != null) {
String search_res = whatAreYouLooking.getString(KEY_SUCCESS);
if(Integer.parseInt(search_res) == 1){
jsonarray = whatAreYouLooking.getJSONArray("result");
JSONArray jsonWhatAreYouLookingArray = new JSONArray(whatAreYouLooking.optString("result"));
int totalTopics = jsonWhatAreYouLookingArray.length();
if(totalTopics<=maxRecords){
load_more_btn.setVisibility(View.GONE);
}
for (int w = 0; w < maxRecords; w++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jsonLookingObject = jsonWhatAreYouLookingArray.getJSONObject(w);
map.put("topicID", jsonLookingObject.getString("topicID"));
map.put("Name", jsonLookingObject.getString("Name"));
map.put("Phone",jsonLookingObject.getString("Phone"));
arraylist.add(map);
listview = (ListView) view.findViewById(R.id.listview);
adapter = new ListViewAdapter(this.getActivity(), arraylist);
listview.setAdapter(adapter);
}
}else{
}
}else{
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
}
public void getPagingMyTopics(JSONObject myTopicsList,int maxMyRecordsHere){
arraylistTwo = new ArrayList<HashMap<String, String>>();
try {
if (myTopicsList.getString(KEY_SUCCESS) != null) {
String search_res_Two = myTopicsList.getString(KEY_SUCCESS);
if(Integer.parseInt(search_res_Two) == 1){
jsonarrayTwo = myTopicsList.getJSONArray("result");
JSONArray jsonWhatAreYouLookingArrayTwo = new JSONArray(myTopicsList.optString("result"));
int totalTopics = jsonWhatAreYouLookingArrayTwo.length();
if(totalTopics<=maxMyRecordsHere){
loadMoreMyTopics.setVisibility(View.GONE);
}
for (int w = 0; w < maxMyRecordsHere; w++) {
HashMap<String, String> mapTwo = new HashMap<String, String>();
JSONObject jsonLookingObjectTwo = jsonWhatAreYouLookingArrayTwo.getJSONObject(w);
mapTwo.put("topicID", jsonLookingObjectTwo.getString("topicID"));
mapTwo.put("Name", jsonLookingObjectTwo.getString("Name"));
mapTwo.put("Phone",jsonLookingObjectTwo.getString("Phone"));
arraylistTwo.add(mapTwo);
listviewTwo = (ListView) view.findViewById(R.id.listviewTwo);
adapterTwo = new ListViewAdapter(this.getActivity(), arraylistTwo);
listviewTwo.setAdapter(adapterTwo);
}
}else{
}
}else{
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
}
private void setWebViewHowItworks(){
WebView wv;
wv = (WebView) view.findViewById(R.id.webView1);
wv.setBackgroundColor(0);
wv.setBackgroundResource(android.R.color.black);
wv.setWebChromeClient(new WebChromeClient());
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setPluginsEnabled(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.addJavascriptInterface(this, "webConnector");
wv.addJavascriptInterface(this, "toaster");
wv.clearView();
wv.loadUrl("www.google.com");
wv.requestLayout();
}
private class TransparentProgressDialog extends Dialog {
private ImageView iv;
public TransparentProgressDialog(Context context, int resourceIdOfImage) {
super(context, R.style.TransparentProgressDialog);
WindowManager.LayoutParams wlmp = getWindow().getAttributes();
wlmp.gravity = Gravity.CENTER_HORIZONTAL;
getWindow().setAttributes(wlmp);
setTitle(null);
setCancelable(false);
setOnCancelListener(null);
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
iv = new ImageView(context);
iv.setImageResource(resourceIdOfImage);
layout.addView(iv, params);
addContentView(layout, params);
}
@Override
public void show() {
super.show();
RotateAnimation anim = new RotateAnimation(0.0f, 360.0f , Animation.RELATIVE_TO_SELF, .5f, Animation.RELATIVE_TO_SELF, .5f);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(3000);
iv.setAnimation(anim);
iv.startAnimation(anim);
}
}
public void tabValueZero(){
searchRelativeView.setVisibility(View.VISIBLE);
searchRelativeViewMyLists.setVisibility(View.GONE);
webViewHolderLayout.setVisibility(View.GONE);
}
public void tabValueOne(){
searchRelativeView.setVisibility(View.GONE);
searchRelativeViewMyLists.setVisibility(View.VISIBLE);
webViewHolderLayout.setVisibility(View.GONE);
}
public void tabValueTwo(){
searchRelativeView.setVisibility(View.GONE);
searchRelativeViewMyLists.setVisibility(View.GONE);
webViewHolderLayout.setVisibility(View.VISIBLE);
setWebViewHowItworks();
}
}
答案 0 :(得分:1)
是编辑过的代码,我在其中给出了一个样本,包括片段选项卡中的Activity。如果您无法理解,请告诉我们:
//FragmentActivity having tabs
package com.example.tabhost;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
public class MainActivity extends FragmentActivity {
Context mContext;
Intent mIntent;
TabHost mTabHost;
ViewPager mViewPager;
TabsAdapterActivity mTabsAdapter;
//Setup tab
private void setupTabHost() {
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
mViewPager = (ViewPager) findViewById(R.id.pager);
mTabsAdapter = new TabsAdapterActivity(this, mTabHost, mViewPager);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
setupTabHost();
addTab(R.string.mycards,"My Cards Category", MyCardsActivity.class); //My Cards
addTab(R.string.yourcards,"Your Cards Category", YourCardsActivity.class); //Shared Cards
}
//Add tab
private void addTab(int headingTextId, String tabSpec, Class<?> fragmentclass){
LayoutInflater inflater_mycard = getLayoutInflater();
View view = inflater_mycard.inflate(R.layout.tab_style, null);
TextView tab_heading = (TextView) view.findViewById(R.id.tab_heading);
tab_heading.setText(getResources().getString(headingTextId));
mTabsAdapter.addTab(mTabHost.newTabSpec(tabSpec).setIndicator(view), fragmentclass, null);
}
}
//TabsAdapter designed to include Activity
package com.example.tabhost;
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.TabWidget;
import java.util.ArrayList;
import com.example.tabhost.TabsAdapterFragment.DummyTabFactory;
import com.example.tabhost.TabsAdapterFragment.TabInfo;
/**
* This is a helper class that implements the management of tabs and all
* details of connecting a ViewPager with associated TabHost. It relies on a
* trick. Normally a tab host has a simple API for supplying a View or
* Intent that each tab will show. This is not sufficient for switching
* between pages. So instead we make the content part of the tab host
* 0dp high (it is not shown) and the TabsAdapter supplies its own dummy
* view to show as the tab content. It listens to changes in tabs, and takes
* care of switch to the correct paged in the ViewPager whenever the selected
* tab changes.
*/
public class TabsAdapterActivity extends PagerAdapter
implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener {
private final Context mContext;
private final TabHost mTabHost;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
private final Rect mTempRect = new Rect();
private TabHost.OnTabChangeListener mOnTabChangeListener;
static final class TabInfo {
public final String tag;
private final Class<?> clss;
private final Bundle args;
TabInfo(String _tag, Class<?> _class, Bundle _args) {
tag = _tag;
clss = _class;
args = _args;
}
}
static class DummyTabFactory implements TabHost.TabContentFactory {
private final Context mContext;
public DummyTabFactory(Context context) {
mContext = context;
}
@Override
public View createTabContent(String tag) {
View v = new View(mContext);
v.setMinimumWidth(0);
v.setMinimumHeight(0);
return v;
}
}
public TabsAdapterActivity(Activity activity, TabHost tabHost, ViewPager pager) {
mContext = activity;
mTabHost = tabHost;
mViewPager = pager;
mTabHost.setOnTabChangedListener(this);
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
}
public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) {
tabSpec.setContent(new DummyTabFactory(mContext));
String tag = tabSpec.getTag();
TabInfo info = new TabInfo(tag, clss, args);
mTabs.add(info);
mTabHost.addTab(tabSpec);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mTabs.size();
}
@Override
public Class<? extends TabInfo> instantiateItem(ViewGroup container, int position) {
/*View view = mTabs.get(position).view;
container.addView(view);
return view;*/
return mTabs.get(position).getClass();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public void setOnTabChangedListener(TabHost.OnTabChangeListener listener) {
mOnTabChangeListener = listener;
}
@Override
public void onTabChanged(String tabId) {
int position = mTabHost.getCurrentTab();
mViewPager.setCurrentItem(position);
if (mOnTabChangeListener != null) {
mOnTabChangeListener.onTabChanged(tabId);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// Unfortunately when TabHost changes the current tab, it kindly
// also takes care of putting focus on it when not in touch mode.
// The jerk.
// This hack tries to prevent this from pulling focus out of our
// ViewPager.
TabWidget widget = mTabHost.getTabWidget();
int oldFocusability = widget.getDescendantFocusability();
widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
mTabHost.setCurrentTab(position);
widget.setDescendantFocusability(oldFocusability);
// Scroll the current tab into visibility if needed.
View tab = widget.getChildTabViewAt(position);
mTempRect.set(tab.getLeft(), tab.getTop(), tab.getRight(), tab.getBottom());
widget.requestRectangleOnScreen(mTempRect, false);
// Make sure the scrollbars are visible for a moment after selection
/*final View contentView = mTabs.get(position).view;
if (contentView instanceof CaffeinatedScrollView) {
((CaffeinatedScrollView) contentView).awakenScrollBars();
}*/
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
//-------Supporting XML layouts & drawables-----------
// tab_style.xml place inside layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabsLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tab_bg_selector"
android:gravity="center"
android:orientation="vertical"
android:padding="10dip" >
<TextView
android:id="@+id/tab_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/tab_text_selector"
android:textSize="15sp" />
</LinearLayout>
//place below in drawable folder
//tab_bg_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabsLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tab_bg_selector"
android:gravity="center"
android:orientation="vertical"
android:padding="10dip" >
<TextView
android:id="@+id/tab_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/tab_text_selector"
android:textSize="15sp" />
</LinearLayout>
//tab_bg_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="-90"
android:centerColor="#2A85C4"
android:endColor="#1B73AD"
android:startColor="#1B73AD" />
</shape>
//tab_bg_unselected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="-90"
android:centerColor="#424242"
android:endColor="#5C5C5C"
android:startColor="#5C5C5C" />
</shape>
//tab_bg_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@android:color/white"/>
<item android:state_focused="true" android:color="@android:color/white"/>
<item android:state_pressed="true" android:color="@android:color/white"/>
<item android:color="#f8f8f8"/>
</selector>