我的app基本结构如下
Tabs
SherlockFragmentActivity(Has Fragments One, Two, Three, Four)
|
|-->|SherlockFragment_one (Has Chiled Fragments A, B, C Using Viewpager)
| |
| |-->SherlockFragment_one_A
| |-->SherlockFragment_one_B
| |-->SherlockFragment_one_C
|
|
|-->SherlockFragment_two
|-->SherlockFragment_three
|-->SherlockFragment_Four
这是图像
看看我的孩子片段(Say SherlockFragment_one_A)有一个Listview。我想在此Listview的任何项目点击上切换Tab。
我的app结构的代码。请参阅我接受的答案android-layout-actionbarsherlock-tabs-viewpagerindicator-on-1st-tab。
问题:是否可以从子片段
逐步切换选项卡这是我的具有listview
的子片段的代码 package fragment.overview;
import android.app.ActionBar;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TabHost;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragment;
import com.example.myappstructure.R;
public class OverView_Nearby_events extends SherlockFragment implements OnItemClickListener {
private ListView listView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.overview_nearby_evets, container,
false);
listView = (ListView) v.findViewById(R.id.listView1);
listView.setAdapter(new MyListAdapter());
return v;
}
@Override
public void onStart() {
super.onStart();
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// **********Switch Tab over Here**********//
// I tried this. but not any success.
//ActionBar.Tab host = (ActionBar.Tab) getActivity().findViewById(android.R.id.tabs);
//host.setCurrentTab(3);
}
private class MyListAdapter extends BaseAdapter {
@Override
public int getCount() {
return 10;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getActivity()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(
R.layout.overview_nearby_events_listitems, parent, false);
return rowView;
}
}
}
编辑1 临时解决方案
if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= 11) {
android.app.ActionBar.Tab eventTab = getActivity().getActionBar()
.getTabAt(3);
getActivity().getActionBar().selectTab(eventTab);
}
但这有效至API级别11,我使用了支持库。如何使这个工作在所有Android版本,即API级别8分钟froyo?
答案 0 :(得分:0)
解决方案
if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= 11) {
android.app.ActionBar.Tab eventTab = getActivity().getActionBar()
.getTabAt(3);
getActivity().getActionBar().selectTab(eventTab);
}
但这有效至API级别11,我使用了支持库。如何使这个工作在所有Android版本,即API级别8分钟froyo?我不知道这个。 :)