- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的应用程序有 2 个选项卡,运行起来非常棒。
但是今天我试图扩展我的标签栏并添加了第三个标签。
当我点击第三个选项卡时,它会破坏第一个选项卡 fragment ,并在第一个选项卡 fragment 中调用 onDestroyView 方法。
当我点击第二个选项卡时,它不会调用 onDestroyView。
为什么第三个选项卡会破坏第一个选项卡?
我不希望它破坏我的第一印象。
我该如何解决这个问题?
我的自定义 FragmentAdapter 类
package com.esmobileinc.vetmapp;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
public class SectionsPagerAdapter extends FragmentPagerAdapter {
Context mContext;
private Fragment mCurrentFragment;
public SectionsPagerAdapter(Context context, FragmentManager fm) {
super(fm);
mContext = context;
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
switch (position){
case 0:
return new HaritaFragment();
case 1:
return new ListeFragment();
case 2:
return new ListeFragment();
}
return null;
}
public Fragment getCurrentFragment() {
return mCurrentFragment;
}
//...
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
if (getCurrentFragment() != object) {
mCurrentFragment = ((Fragment) object);
}
super.setPrimaryItem(container, position, object);
}
@Override
public int getCount() {
return 3;
}
/*@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return mContext.getString(R.string.title_section1).toUpperCase(l);
case 1:
return mContext.getString(R.string.title_section2).toUpperCase(l);
}
return null;
}*/
public int getIcon(int position){
switch (position){
case 0:
return R.drawable.harita_tab_icon;
case 1:
return R.drawable.liste_tab_icon;
case 2:
return R.drawable.harita_tab_icon;
}
return R.drawable.harita_tab_icon;
}
}
这是我的主要 Activity 。
package com.esmobileinc.vetmapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.instabug.library.Instabug;
import com.instabug.wrapper.support.activity.InstabugActionBarActivity;
public class MainActivity extends InstabugActionBarActivity implements ActionBar.TabListener {
SectionsPagerAdapter mSectionsPagerAdapter;
ViewPager mViewPager;
FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = getSupportFragmentManager();
// Set up the action bar.
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.nav_logo);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setTitle("");
mSectionsPagerAdapter = new SectionsPagerAdapter(this, getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(
actionBar.newTab()
//.setText(mSectionsPagerAdapter.getPageTitle(i))
.setIcon(mSectionsPagerAdapter.getIcon(i))
.setTabListener(this));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_mail) {
Instabug.getInstance().setCommentFieldHint(getString(R.string.veterinerbildir_comment));
Instabug.getInstance().enableEmailField(true,true);
Instabug.getInstance().setCommentRequired(true);
Instabug.getInstance().invokeFeedbackProcess(Instabug.INSTABUG_FEEDBACK_FEEDBACK);
return true;
}
else if (id == R.id.action_about){
Intent intent = new Intent(this,InfoActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
}
这是我的第一个标签 fragment 。
package com.esmobileinc.vetmapp;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.instabug.library.Instabug;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HaritaFragment extends Fragment implements LocationListener {
private static GoogleMap mGoogleMap;
public static HashMap<Marker, Markers> mMarkersHashMap = new HashMap<Marker, Markers>();
private ArrayList<Markers> mMyMarkersArray = new ArrayList<Markers>();
private Map<Marker, Markers> allMarkersMap = new HashMap<Marker, Markers>();
private Location userLocation;
private LatLng latLng;
private Double lat;
private Double lng;
private static View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
return inflater.inflate(R.layout.fragment_harita, container, false);
}
public void onViewCreated(View view, Bundle savedInstanceState){
setupMap();
//showGPSDisableAlert();
}
@Override
public void onResume() {
super.onResume();
googleAnalyticsSendScreen();
// Getting Google Play availability status
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity().getBaseContext());
if (status != ConnectionResult.SUCCESS) { // Google Play Services are not available
int requestCode = 10;
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, getActivity(), requestCode);
dialog.show();
} else { // Google Play Services are available
getAllDataFromParse();
}
}
public void onDestroyView()
{
super.onDestroyView();
Fragment fragment = (getChildFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}
private void showGPSDisableAlert(){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.location_error_title);
builder.setMessage(R.string.location_error_message);
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
private void getLocations(){
mGoogleMap.getUiSettings().setMapToolbarEnabled(false);
userLocation = mGoogleMap.getMyLocation();
if (userLocation != null) {
onLocationChanged(userLocation);
latLng = new LatLng(lat,lng);
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));
}
else {
showGPSDisableAlert();
latLng = new LatLng(39.19820535, 34.89257812);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5));
}
}
private void getAllDataFromParse(){
if (mMyMarkersArray.isEmpty()){
if (isInternetAvailable()){
unPinAllParseData();
getOnlineDataFromParse();
}
else{
getOfflineDataFromParse();
}
}
}
private void unPinAllParseData(){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
ParseObject.unpinAllInBackground();
}
private void getOnlineDataFromParse(){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {
for(int i=0; i< vetList.size(); i++){
mMyMarkersArray.add(new Markers(
vetList.get(i).getString("adi"),
vetList.get(i).getString("adres"),
vetList.get(i).getString("telefon"),
vetList.get(i).getString("web"),
vetList.get(i).getString("face"),
vetList.get(i).getString("geceAcik"),
vetList.get(i).getDouble("latitude"),
vetList.get(i).getDouble("longitude")));
}
getLocations();
plotMarkers(mMyMarkersArray);
ParseObject.pinAllInBackground(vetList);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_online_query_error_title));
builder.setMessage(getString(R.string.parse_online_query_error_message));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
private void getOfflineDataFromParse(){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.fromLocalDatastore();
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {
getLocations();
for(int i=0; i< vetList.size(); i++){
mMyMarkersArray.add(new Markers(
vetList.get(i).getString("adi"),
vetList.get(i).getString("adres"),
vetList.get(i).getString("telefon"),
vetList.get(i).getString("web"),
vetList.get(i).getString("face"),
vetList.get(i).getString("geceAcik"),
vetList.get(i).getDouble("latitude"),
vetList.get(i).getDouble("longitude")));
}
plotMarkers(mMyMarkersArray);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_offline_query_error_title));
builder.setMessage(getString(R.string.parse_offline_query_error_title));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
private void googleAnalyticsSendScreen() {
Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
GlobalState.TrackerName.APP_TRACKER);
t.setScreenName("Harita Ekranı");
t.send(new HitBuilders.AppViewBuilder().build());
}
private void plotMarkers(ArrayList<Markers> markers){
if(markers.size() > 0)
{
for (Markers myMarker : markers)
{
// Create user marker with custom icon and other options
MarkerOptions markerOption = new MarkerOptions().position(new LatLng(myMarker.getmLatitude(), myMarker.getmLongtitude()));
if (myMarker.getmGeceAcik().equalsIgnoreCase("YES")){
markerOption.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
}
else if (myMarker.getmGeceAcik().equalsIgnoreCase("Cep")){
markerOption.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
}
else if (myMarker.getmGeceAcik().equalsIgnoreCase("Barinak")){
markerOption.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET));
}
final Marker currentMarker = mGoogleMap.addMarker(markerOption);
mMarkersHashMap.put(currentMarker, myMarker);
allMarkersMap.put(currentMarker, myMarker);
mGoogleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
@Override
public View getInfoWindow(Marker marker) {
Markers selectedMarkerInfo = allMarkersMap.get(marker);
View v = View.inflate(getActivity().getBaseContext(),R.layout.info_window,null);
TextView tvAdi = (TextView) v.findViewById(R.id.tv_adi);
TextView tvAdres = (TextView) v.findViewById(R.id.tv_adres);
ImageView img = (ImageView) v.findViewById(R.id.img_icon);
tvAdi.setText(selectedMarkerInfo.getmAdi());
tvAdres.setText(selectedMarkerInfo.getmAdres());
tvAdi.setSelected(true);
if (selectedMarkerInfo.mGeceAcik.equalsIgnoreCase("Barinak")){
img.setImageResource(R.drawable.belediye);
}
else if (selectedMarkerInfo.mGeceAcik.equalsIgnoreCase("YES")){
img.setImageResource(R.drawable.gece_acik);
}
else if (selectedMarkerInfo.mGeceAcik.equalsIgnoreCase("Cep")){
img.setImageResource(R.drawable.acil);
}
else{
img.setImageResource(R.drawable.normal);
}
return v;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
});
}
}
}
private void setupMap(){
mGoogleMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)).getMap();
mGoogleMap.setMyLocationEnabled(true);
latLng = new LatLng(39.19820535, 34.89257812);
//latLng = new LatLng(41.048846, 29.027924);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5));
//OnClick Info Window Listener...
mGoogleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Markers selectedMarkerInfo = allMarkersMap.get(marker);
//GOOGLE ANALYTICS EVENT SENDER
String secilenVeteriner = selectedMarkerInfo.getmAdi();
Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
GlobalState.TrackerName.APP_TRACKER);
t.send(new HitBuilders.EventBuilder()
.setCategory(secilenVeteriner)
.setAction("Harita ekranın'dan seçilme sayınız")
.setLabel("Harita")
.build());
Intent intent = new Intent(getActivity(), DetailActivity.class);
intent.putExtra("adi", selectedMarkerInfo.getmAdi());
intent.putExtra("adres", selectedMarkerInfo.getmAdres());
intent.putExtra("web", selectedMarkerInfo.getmWeb());
intent.putExtra("face", selectedMarkerInfo.getmFace());
intent.putExtra("tel", selectedMarkerInfo.getmTelefon());
intent.putExtra("lat", selectedMarkerInfo.getmLatitude().toString());
intent.putExtra("lng", selectedMarkerInfo.getmLongtitude().toString());
intent.putExtra("gece", selectedMarkerInfo.getmGeceAcik());
startActivity(intent);
}
});
}
private boolean isInternetAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
@Override
public void onLocationChanged(Location location) {
lat = (location.getLatitude());
lng = (location.getLongitude());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_mail) {
Instabug.getInstance().setCommentFieldHint(getString(R.string.veterinerbildir_comment));
Instabug.getInstance().enableEmailField(true,true);
Instabug.getInstance().setCommentRequired(true);
Instabug.getInstance().invokeFeedbackProcess(Instabug.INSTABUG_FEEDBACK_FEEDBACK);
return true;
}
if (id == R.id.map_standart){
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
if (id == R.id.map_hibrit){
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
}
if (id == R.id.map_uydu){
mGoogleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}
return super.onOptionsItemSelected(item);
}
}
这是我的第二个标签 fragment 类,第三个标签 fragment 是一样的。
package com.esmobileinc.vetmapp;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
public class ListeFragment extends ListFragment {
private View mView;
private ArrayList<String> illerArray = new ArrayList<String>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_liste, container, false);
return mView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getAllDataFromParse();
}
@Override
public void onResume() {
super.onResume();
googleAnalyticsSendScreen();
}
private void getAllDataFromParse(){
if (illerArray.isEmpty()){
if (isInternetAvailable()){
getOnlineDataFromParse();
}
else{
getOfflineDataFromParse();
}
}
}
private boolean isInternetAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) this.getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
private void getOnlineDataFromParse(){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {
for(int i=0; i< vetList.size(); i++){
illerArray.add(vetList.get(i).getString("il"));
}
illerArray = new ArrayList<String>(new LinkedHashSet<String>(illerArray));
Collections.sort(illerArray, new orderComparator());
showListView();
registerCallBack();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_online_query_error_title));
builder.setMessage(getString(R.string.parse_online_query_error_message));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
private void getOfflineDataFromParse(){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Veterinerler");
query.fromLocalDatastore();
query.setLimit(1000);
query.whereEqualTo("isMember", "YES");
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> vetList, ParseException e) {
if (e == null) {
for(int i=0; i< vetList.size(); i++){
illerArray.add(vetList.get(i).getString("il"));
}
illerArray = new ArrayList<String>(new LinkedHashSet<String>(illerArray));
Collections.sort(illerArray, new orderComparator());
showListView();
registerCallBack();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getString(R.string.parse_online_query_error_title));
builder.setMessage(getString(R.string.parse_online_query_error_message));
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
private void showListView() {
ArrayAdapter<String> adapter = new myListAdapter();
ListView listView = (ListView) getActivity().findViewById(android.R.id.list);
listView.setAdapter(adapter);
}
private void registerCallBack() {
ListView listView = (ListView) getActivity().findViewById(android.R.id.list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String secilenIl = illerArray.get(position);
//GOOGLE EVENT SEND
Tracker t = ((GlobalState) getActivity().getApplication()).getTracker(
GlobalState.TrackerName.APP_TRACKER);
t.send(new HitBuilders.EventBuilder()
.setCategory("İller Listesi")
.setAction("Seçilen il")
.setLabel(secilenIl)
.build());
//INTENTING DETAIL VIEW CONTROLLER !!!!
Intent intent = new Intent(getActivity(),IlcelerActivity.class);
intent.putExtra("secilenIl",secilenIl);
startActivity(intent);
}
});
}
private class myListAdapter extends ArrayAdapter<String>{
public myListAdapter(){
super(getActivity(), R.layout.ilce_view, illerArray);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null){
itemView = getActivity().getLayoutInflater().inflate(R.layout.ilce_view, parent, false);
}
String il = illerArray.get(position);
TextView ilce = (TextView) itemView.findViewById(android.R.id.text1);
ilce.setText(il);
return itemView;
}
}
public class orderComparator implements Comparator<String> {
@Override
public int compare(String il1, String il2) {
Collator collator = Collator.getInstance(Locale.getDefault());
//veya Collator trCollator = Collator.getInstance(new Locale("tr", "TR"));
return collator.compare(il1, il2);
}
}
}
使用这些代码,当我点击第三个选项卡时,我的应用程序会调用 HaritaFrament(第一个选项卡)onDestroyView 方法。
但是当我点击第二次时它不会调用 onDestroyView。
我不想破坏我的 HaritaFragment。
请帮我解决这个问题。
最佳答案
您要找的是ViewPager#setOffscreenPageLimit .
默认为 1,这意味着 ViewPager 将只保留当前位置之前的 1 个 fragment 和之后的 1 个 fragment 。如果您有 3 个 fragment 并且您不希望其中任何一个被 ViewPager 销毁,您可以将其设置为 2。
mViewPager.setOffscreenPageLimit(2);
关于当我点击第三次时,Android TabActivity 调用 onDestroyView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278673/
public class HMITabActivity extends TabActivity{ @Override protected void onCreate(Bundle saved
我正在测试 TabActivity,每个选项卡中都有一个列表。 在运行应用程序时,选项卡的内容会像这样重叠。 在我单击选项卡后,重叠被清除。这是我的代码: testtabs.xml 布局:
我正在开发一个使用 TabActivity 的 android 示例项目。但由于现在已弃用,我将其替换为“fragment ” Activity 。现在我不知道用什么来代替, TabHost tabH
我有一个 TabActivity,想要捕捉和处理 HOME 和 BACK 的按下。我需要在哪里捕捉这些事件? 在我的 TabActivity 子类中,我实现了以下内容: @Override publi
我正在尝试向我的 TabActivty 添加动画。例如,当用户选择第二个选项卡时,我希望新 Activity 来自右侧。当用户选择第一个选项卡时,我希望 Activity 来自左侧。 我找到了如何添加
我该如何解释我的问题? 我有一个使用选项卡的应用程序(通过 Intent ,而不是 View )。我已经在每个 View 内实现了导航,没有任何问题,但我需要在全屏和横向模式(因此没有标签)的 Act
我有一个托管其他三个 Activity 的 TabActivity。 如果选择了第一个选项卡,我可以更改设备方向,一切正常。 如果我转到第二个或第三个选项卡并更改方向,选项卡子 Activity 的(
我想知道使用 Fragments(ActivityGroup 的新版本)有什么好处至于现在我可以用 TabActivity 做同样的事情。如果我想替换固定的 tabwidget 我可以将可见性设置为
我有一个包含三个选项卡的 TabActivity。拳头标签是问题所在。第一个选项卡加载 ActivityGroup。 OnCreate 它加载默认内容 View 。稍后在某个事件上,我们添加了不同的内
我的主要 Activity 是 TabActivity。 我有一些由选项卡 Activity 呈现的 Activity ,我想将其锁定为纵向。 在 AndroidManifest.xml 中,当我为
TabActivity 中的问题我的应用程序中有三个选项卡,每个选项卡都是不同的 Activity 。在第一个选项卡中,我有一个文本字段和 ListView ,用户可以通过它们进行搜索但是在搜索之后当
我在 TabActivity 中创建了三个选项卡onCreate . 如何在运行时隐藏一个选项卡? 最佳答案 要隐藏选项卡,您必须将其从 TabWidget 中删除。仅仅设置 INVISIBLE 是不
这个主题可能看起来与其他主题相似,但我还没有找到任何适用于这种情况的答案。 这就是我想要的:我有一个带菜单的 TabActivity,其中包含没有任何菜单的选项卡。当我按下菜单按钮时,我希望显示唯一的
我是 Android 开发的新手,当我制作我的第一个应用程序时感到非常兴奋(并且我认为完全理解它),但我就是无法运行它。它对我来说看起来很干净,我不确定根据调试信息要查找什么。至少解释一下我应该寻找什
我正在开发一个使用 tabs 和 fragments 的应用程序。 Google 正在提供 android 支持 v4.jar,以便我们也可以使用 api 1.6 的 fragment 。 我已经查看
我搜索了我的具体问题,但找不到问题的答案。 在我的应用程序中,我的主要 Activity 有一个包含 3 个选项卡的选项卡主机。所有三个选项卡都有一个包含项目的 ListView 。 选项卡 1 Li
我在这里看到了一些类似的帖子,但我还没有找到任何答案。我想在我的选项卡 Activity 中添加滑动手势,以便我能够使用该手势更改选项卡。 这是我的代码: public class Domicilia
我的 TabActivity 有一个类 public class DashboardActivity extends TabActivity 这有几个选项卡和一个操作栏。这些选项卡之一是项目列表。 p
我正在尝试为应用程序实现以下背景... 对于背景图像(应用程序背景)...我在 setContentView(布局)中设置图像...通过添加此行,我收到运行时异常... 如果我在子 Activity
好吧,我正在使用 TabActivity 为 api 8 开发和应用程序但我今天发现“此类已弃用。” 所以我们应该使用FragmentActivity从现在开始实现标签?但是当我想显示带有 Activ
我是一名优秀的程序员,十分优秀!