Android 选项卡片段更改操作栏微调器
我有片段活动,有标签片段。像这样 但每当我点击第二个标签,动作栏上的微调器就会变成空的,就像这样 我认为这将是一个常见的问题,但如果它不是告诉我,我会提供一些代码也 我没有做任何与它相关的事情,但我希望它的代码可以帮助你Android 选项卡片段更改操作栏微调器,android,android-fragments,android-actionbar,android-spinner,Android,Android Fragments,Android Actionbar,Android Spinner,我有片段活动,有标签片段。像这样 但每当我点击第二个标签,动作栏上的微调器就会变成空的,就像这样 我认为这将是一个常见的问题,但如果它不是告诉我,我会提供一些代码也 我没有做任何与它相关的事情,但我希望它的代码可以帮助你 mTabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String arg0) { FragmentManager
mTabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String arg0) {
FragmentManager fragmentManager = getSupportFragmentManager();
InterestTabFragment tabOneFrgment = (InterestTabFragment) fragmentManager
.findFragmentByTag("tab1");
InteractionTabFragment tabTwoFrgment = (InteractionTabFragment) fragmentManager
.findFragmentByTag("tab2");
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if (tabOneFrgment != null && tabOneFrgment.isVisible()) {
if (isInterestDataChanged) {
// delete cache filed of interest
}
}else if(tabTwoFrgment != null && tabTwoFrgment.isVisible()){
if (isInteractionDataChanged) {
// delete cache filed of interaction
}
}else{
if (isHangoutDataChanged) {
// delete cache filed of hangout
}
}
fragmentTransaction.commit();
}
});
这在OnCreateOptionMenu中
MenuItem item = menu.findItem(R.id.spListOpt);
spinner = (Spinner) MenuItemCompat.getActionView(item);
spinner.setAdapter(YearSpinnerAdapter);
spinner.setBackgroundResource(R.drawable.spinner);
这是对数据的调用,我正在其执行后代码中设置适配器
class joingYearCall extends AsyncTask<String, String, String>{
@Override
protected String doInBackground(String... uri) {
String responseString = null;
responseString = HttpManager.GetData(uri[0]);
JSONObject joiningResult;
JSONObject year;
try {
joiningResult = new JSONObject(responseString);
year = joiningResult.getJSONObject("ProfileInfoResult");
joiningYear = Integer.parseInt(year.getString("joiningYear"));
items.clear();
Calendar now = Calendar.getInstance();
int currentYear = now.get(Calendar.YEAR);
items.add("All");
while(currentYear >= joiningYear)
{
items.add(String.valueOf(currentYear--));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return "";
}
@Override
protected void onPostExecute(String result) {
spinner.setAdapter(YearsSpinnerAdapter);
}
@Override
protected void onPreExecute() {
}
}
您是否正在更改选项卡上的片段单击?我在xml文件中有android.support.v4.app.FragmentTabHost,然后添加类似thismTabHost.setupthis、getSupportFragmentManager、android.R.id.tabcontent的选项卡;mTabHost.addTab mTabHost.newTabSpectab1.setIndicator getResources.getStringR.string.interest,InterestAttabFragment.class,null;你的兴趣是什么?是活动还是片段?我在标签上添加了更改代码,请看一下。可能是出了什么问题。
private SpinnerAdapter YearsSpinnerAdapter = new BaseAdapter() {
private TextView text;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflator.inflate(R.layout.spinner_hint_item, null);
}
text = (TextView) convertView.findViewById(R.id.spinnerTarget);
text.setSingleLine(true);
if (!selected) {
Drawable img = getResources().getDrawable( R.drawable.time_stalk);
img.setBounds( 0, 0, 30, 30 );
text.setCompoundDrawables( img, null, null, null );
} else {
text.setText(items.get(position));
}
return convertView;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public int getCount() {
return items.size();
}
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
convertView = mInflator.inflate(R.layout.spinner_item, null);
}
text = (TextView) convertView.findViewById(R.id.spinnerTarget);
text.setSingleLine(true);
text.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
selected = true;
((BaseAdapter) YearsSpinnerAdapter).notifyDataSetChanged();
return false;
}
});
text.setText(items.get(position));
return convertView;
};
};