-4

我有导航抽屉的主要活动,用 2 个不同的片段替换框架布局:

1 带有谷歌地图 2 带有 gps 的详细信息

我有 2 个问题:(第一个已解决)

1-当我有位置(gps 固定)时,如果我改变设备的方向我失去了修复......我希望屏幕旋转改变时没有任何改变。谢谢(已解决)

2-当我从片段 1 传递到其他片段时,将重新创建片段,我希望重新调用之前的状态.... 示例:如果我从地图传递到 gps 的详细信息,则文本视图必须重新充电,并且有 1 秒没有文本....我希望 textview 是即时的,而不需要重新创建片段谢谢

对不起我的英语不好...

public class MainActivity extends SherlockFragmentActivity implements LocationListener, GpsStatus.Listener {

private static final String TAG = "FixGpsActivity";
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] mActivityTitles;
private ListView mDrawerList;
private SherlockActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private boolean isShared= false;
private LocationManager mService;
private LocationProvider mProvider;
private GpsStatus mStatus;
private ArrayList<FixGpsListener> mFixGpsListeners = new ArrayList<FixGpsListener>();
boolean mStarted;
private Location mLastLocation;
ShareActionProvider providerShare;

Fragment mapFragment= new MapFragment();
Fragment gpsFragment= new GpsDatiFragment();
Fragment altroFragment= new AltroFragment();

private static MainActivity sInstance;

interface FixGpsListener extends LocationListener {
    public void gpsStart();
    public void gpsStop();
    public void onGpsStatusChanged(int event, GpsStatus status);
}

static MainActivity getInstance() {
    return sInstance;
}

void addSubActivity(FixGpsListener activity) {
    mFixGpsListeners.add(activity);
}

private void gpsStart() {
    if (!mStarted) {
        mService.requestLocationUpdates(mProvider.getName(), 1000, 0.0f, this);
        mStarted = true;
    }
    for (FixGpsListener activity : mFixGpsListeners) {
        activity.gpsStart();
    }
}

private void gpsStop() {
    if (mStarted) {
        mService.removeUpdates(this);
        mStarted = false;
    }
    for (FixGpsListener activity : mFixGpsListeners) {
        activity.gpsStop();
    }
}

private boolean sendExtraCommand(String command) {
    return mService.sendExtraCommand(LocationManager.GPS_PROVIDER, command, null);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    sInstance = this;

    mService = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mProvider = mService.getProvider(LocationManager.GPS_PROVIDER);
    if (mProvider == null) {
        // FIXME - fail gracefully here
        Log.e(TAG, "Unable to get GPS_PROVIDER");
    }
    mService.addGpsStatusListener(this);

    // Request use of spinner for showing indeterminate progress, to show
    // the user something is going on during long-running operations
    //requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

    setContentView(R.layout.drawer_layout);

    // Hide the indeterminate progress bar on the activity until we need it
    //setSupportProgressBarIndeterminateVisibility(Boolean.FALSE);     

    mTitle = mDrawerTitle = getTitle();
    mActivityTitles = getResources().getStringArray(R.array.Activity);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_list_item, mActivityTitles));
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    // enable ActionBar app icon to behave as action to toggle nav drawer
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    // ActionBarDrawerToggle ties together the the proper interactions
    // between the sliding drawer and the action bar app icon
    mDrawerToggle = new SherlockActionBarDrawerToggle(
            this,                  /* host Activity */
            mDrawerLayout,         /* DrawerLayout object */
            R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description for accessibility */
            R.string.drawer_close  /* "close drawer" description for accessibility */
            ) {

        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
            //invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
            //invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
        }
    };

    mDrawerLayout.setDrawerListener(mDrawerToggle);

    if (savedInstanceState == null) {
        selectItem(0);
     }
}

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {

    getSupportMenuInflater().inflate(R.menu.main, menu);
    if (mLastLocation !=null) {       
    providerShare = (ShareActionProvider) menu.findItem(R.id.action_share).getActionProvider();

    //providerShare.setShareHistoryFileName(ActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
    providerShare.setShareIntent(createShareIntent());
    }
    return true;
}


private Intent createShareIntent() {
    Intent mShareIntent = new Intent(Intent.ACTION_SEND);
    mShareIntent.setType("text/plain");

    if (mLastLocation !=null) {
        // TODO Auto-generated method stub

        String locationString = "http://maps.google.com/maps?geocode=&q=" +
            Double.toString(mLastLocation.getLatitude()) + "," +
            Double.toString(mLastLocation.getLongitude());
        mShareIntent.putExtra(Intent.EXTRA_SUBJECT, "My Location");
        mShareIntent.putExtra(Intent.EXTRA_TEXT, locationString );

    }else {
    }
    return mShareIntent;    
}

/* Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu (com.actionbarsherlock.view.Menu menu) {
    // Get the ActionProvider
   // ShareActionProvider provider = (ShareActionProvider) menu.findItem(R.id.action_share)
     //   .getActionProvider();

    // If the nav drawer is open, hide action items related to the content view
    boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);

    menu.findItem(R.id.action_share).setEnabled(!drawerOpen);

    MenuItem item= menu.findItem(R.id.gps_start);
    if(!mStarted){

        item.setIcon(R.drawable.ic_gps_start_green);
    }else{

        item.setIcon(R.drawable.ic_gps_stop_red);
    }

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
     // The action bar home/up action should open or close the drawer.
     // ActionBarDrawerToggle will take care of this.
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
   }


    // Handle action buttons
    switch(item.getItemId()) {
    case R.id.action_share:
        return true;
    case R.id.gps_start:

        if(mStarted){
            gpsStop();
            item.setIcon(R.drawable.ic_gps_start_green);
        }else{
            gpsStart();
            item.setIcon(R.drawable.ic_gps_stop_red);
        }


        return true;
     default:
        return super.onOptionsItemSelected(item);
    }

}


/* The click listner for ListView in the navigation drawer */
private class DrawerItemClickListener implements ListView.OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    selectItem(position);
    }
}

private void selectItem(int position) {

    // Getting reference to the FragmentManager
    FragmentManager fragmentManager  = getSupportFragmentManager();
    FragmentTransaction ft = fragmentManager.beginTransaction();
    switch (position) {

    case 0:
        mapFragment.setRetainInstance(true);
        ft.replace(R.id.content_frame, mapFragment);
        //ft.commit();
        break;
    case 1:
        gpsFragment.setRetainInstance(true);
        ft.replace(R.id.content_frame,gpsFragment);
        //ft.commit();
        break;
    case 2:

        ft.replace(R.id.content_frame, altroFragment);
        //ft.commit();
        break;
    case 3: 

        finish();
    default:
        break;

    }

    ft.commit();
    mDrawerList.setItemChecked(position, true);
    // Close drawer
    mDrawerLayout.closeDrawer(mDrawerList);

}

@Override
public void setTitle(CharSequence title) {
    mTitle = title;
    getActionBar().setTitle(mTitle);
}

/**
 * When using the ActionBarDrawerToggle, you must call it during
 * onPostCreate() and onConfigurationChanged()...
 */

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Pass any configuration change to the drawer toggls
    mDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
protected void onDestroy() {
    mService.removeGpsStatusListener(this);
    mService.removeUpdates(this);        
    super.onDestroy();
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub

    mLastLocation = location;
    if (!isShared) {
        invalidateOptionsMenu();
        isShared=true;
    }

    for (FixGpsListener activity : mFixGpsListeners) {
        activity.onLocationChanged(location);
    }
}

public void onStatusChanged(String provider, int status, Bundle extras) {
    for (FixGpsListener activity : mFixGpsListeners) {
        activity.onStatusChanged(provider, status, extras);
    }
}

@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub
    for (FixGpsListener activity : mFixGpsListeners) {
         activity.onProviderDisabled(provider);
}
}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub
    for (FixGpsListener activity : mFixGpsListeners) {
        activity.onProviderEnabled(provider);
    }
}

@Override
public void onGpsStatusChanged(int event) {
    mStatus = mService.getGpsStatus(mStatus);
    for (FixGpsListener activity : mFixGpsListeners) {
        activity.onGpsStatusChanged(event, mStatus);
    }
}

@Override
protected void onResume() {
    super.onResume();

    /*
    if (mStarted){
        mService.requestLocationUpdates(mProvider.getName(), 1000, 0.0f, this); 
    }*/


}

@Override
protected void onRestoreInstanceState(Bundle outState) {
    super.onRestoreInstanceState(outState);
    // Read values from the "savedInstanceState"-object and put them in your textview

    mStarted= outState.getBoolean("ciao");
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    // Save the values you need from your textview into "outState"-object
    super.onSaveInstanceState(outState);
    outState.putBoolean("ciao", mStarted);
}

映射片段:

public class MapFragment extends SherlockMapFragment implements MainActivity.FixGpsListener, View.OnClickListener, LocationSource{

private GoogleMap mMap;
private OnLocationChangedListener mListener; //Used to update the map with new location

    // Constants used to control how the camera animates to a position
    public static final float CAMERA_INITIAL_ZOOM = 18.0f;
    public static final float CAMERA_INITIAL_BEARING = 0.0f;
    public static final float CAMERA_INITIAL_TILT = 45.0f;

    private boolean mGotFix;
    CameraPosition cp;
    double latitude;
    double longitude;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub
        super.onSaveInstanceState(outState);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        //
        View v =super.onCreateView(inflater, container, savedInstanceState);       

        mMap = getMap();


        if(isGoogleMapsInstalled()) {
            if (mMap != null) {
                //Show the location on the map
                mMap.setMyLocationEnabled(true);
                //Set location source
                mMap.setLocationSource(this);

               MainActivity.getInstance().addSubActivity(this);
            }
        } else {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setMessage(getString(R.string.please_install_google_maps));
            builder.setCancelable(false);
            builder.setPositiveButton(getString(R.string.install), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.google.android.apps.maps"));
                    startActivity(intent);

                    getActivity().finish();
                }
            });
            AlertDialog dialog = builder.create();
            dialog.show();

        }   

        return v;
    }


    @Override
    public void onPause(){
        super.onPause();
        cp = mMap.getCameraPosition();
    }
    @Override
    public void onResume() {
        //setUpCamera();
        if (cp != null) {
            mMap.moveCamera(CameraUpdateFactory.newCameraPosition(cp));
            cp = null;
        }
        //SharedPreferences settings = Application.getPrefs();
        //if(mMap != null){

        //mMap.setMapType(Integer.valueOf (String.valueOf(GoogleMap.MAP_TYPE_NORMAL)));

        //}
        super.onResume();
    }

    public void onClick(View v) {}

    public void gpsStart() {        
        mGotFix = false;
    }

    public void gpsStop() {
    }

    public void onLocationChanged(Location loc) {
        //Update real-time location on map
        if (mListener != null) {
            mListener.onLocationChanged(loc);
        }
        latitude= loc.getLatitude();
        longitude= loc.getLongitude();
        setUpCamera();

    }

    public void onStatusChanged(String provider, int status, Bundle extras) {}

    public void onProviderEnabled(String provider) {}

    public void onProviderDisabled(String provider) {}

    public void onGpsStatusChanged(int event, GpsStatus status) {}

    /**
     * Maps V2 Location updates
     */
    @Override
    public void activate(OnLocationChangedListener listener) {
        mListener = listener;       
    }

    /**
     * Maps V2 Location updates
     */
    @Override
    public void deactivate() {
        mListener = null;       
    }

    /**
     * Returns true if Google Maps is installed, false if it is not
     * @return
     */
    @SuppressWarnings("unused")
    public boolean isGoogleMapsInstalled() {
        try {
            ApplicationInfo info = getActivity().getPackageManager().getApplicationInfo("com.google.android.apps.maps", 0 );
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

    public void setUpCamera(){
        if (mMap != null) {
            //Get bounds for detection of real-time location within bounds
            LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
            if (!mGotFix && 
                    (!bounds.contains(new LatLng(latitude, longitude)) || 
                            mMap.getCameraPosition().zoom < (mMap.getMaxZoomLevel() / 2))) {
                CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(new LatLng(latitude, longitude))
                    .zoom(CAMERA_INITIAL_ZOOM)
                    .bearing(CAMERA_INITIAL_BEARING) 
                    .tilt(CAMERA_INITIAL_TILT)
                    .build(); 

                mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));              
            }
            mGotFix = true;
        }

    }

}

详情_GPS

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    setRetainInstance(true);
    mRes = getResources();

    View rootView = inflater.inflate(R.layout.activity_main, container, false);


    mLatitudeView= (TextView) rootView.findViewById(R.id.textView2);
    mLongitudeView= (TextView) rootView.findViewById(R.id.textView4);
    mAltitudeView= (TextView) rootView.findViewById(R.id.textView6);
    mAccuracyView= (TextView) rootView.findViewById(R.id.textView8);
    mSpeedView= (TextView) rootView.findViewById(R.id.textView10);
    mFixTimeView= (TextView) rootView.findViewById(R.id.textView12);
    mTTFFView= (TextView) rootView.findViewById(R.id.TTFF);
    satFixed= (TextView) rootView.findViewById(R.id.textView14);
    mBearingView= (TextView) rootView.findViewById(R.id.bearing);       


    GridView gridView = (GridView)rootView.findViewById(R.id.sv_grid);
    mAdapter = new SvGridAdapter(getActivity());
    gridView.setAdapter(mAdapter);
    gridView.setFocusable(false);
    gridView.setFocusableInTouchMode(false);

    MainActivity.getInstance().addSubActivity(this);

    return rootView;
}

 private void setStarted(boolean navigating) {
        if (navigating != mNavigating) {
            if (navigating) {

            } else {
                mLatitudeView.setText(EMPTY_LAT_LONG);
                mLongitudeView.setText(EMPTY_LAT_LONG);
                mFixTime = 0;
                updateFixTime();
                mTTFFView.setText("");
                mAltitudeView.setText("");
                mAccuracyView.setText("");
                mSpeedView.setText("");
                mBearingView.setText("");
                mSvCount = 0;
                mAdapter.notifyDataSetChanged();
            }
            mNavigating = navigating;
        }
    }

 private void updateFixTime() {
        if (mFixTime == 0 || !MainActivity.getInstance().mStarted) {
             mFixTimeView.setText("");
        } else {
            mFixTimeView.setText(DateUtils.getRelativeTimeSpanString(
                mFixTime, System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS));
        }
    }

 @Override
    public void onResume() {

        MainActivity gta = MainActivity.getInstance();
        setStarted(gta.mStarted);
        super.onResume();
    }

    public void onGpsStarted() {
        setStarted(true);
    }

    public void onGpsStopped() {
        setStarted(false);
    }

    @SuppressLint("NewApi")
    public void gpsStart() {
        //Reset flag for detecting first fix, and capture GPS start time for calculating TTFF later
        mGotFix = false;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //According to Android docs, elapsedRealtimeNanos() is preferred for elapsed time measurements
            mGpsStartTime = SystemClock.elapsedRealtimeNanos();
        } else {
            mGpsStartTime = System.currentTimeMillis();
        }       
    }

    public void gpsStop() {
    }

    public void onGpsStatusChanged(int event, GpsStatus status) {
        switch (event) {
            case GpsStatus.GPS_EVENT_STARTED:
                setStarted(true);
                break;

            case GpsStatus.GPS_EVENT_STOPPED:
                setStarted(false);
                satFixed.setText("0/0");
                break;

            case GpsStatus.GPS_EVENT_FIRST_FIX:
                //status.getTimeToFirstFix() doesn't return a reliable value (see Issue #3),
                //so we're manually calculating TTFF instead in onLocationChanged()                
                break;

            case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
                updateStatus(status);
                Iterable<GpsSatellite> listSat = status.getSatellites();
                nSatFixed = 0;
                totSat=0;

                Iterator<GpsSatellite> sat= listSat.iterator();
                for (GpsSatellite satellite : listSat) {
                    totSat++;
                    if (satellite.usedInFix()) {
                        nSatFixed++;
                    }
                }       
                satFixed.setText((nSatFixed)+"/"+(totSat)); 

                break;
        }
    }


@Override
public void onLocationChanged(Location location) {
    if (!mGotFix) {
        updateTtff(location);
        mGotFix = true;
    }
    mLatitudeView.setText(doubleToString(location.getLatitude(), 7) + " ");
    mLongitudeView.setText(doubleToString(location.getLongitude(), 7) + " ");
    mFixTime = location.getTime();
    if (location.hasAltitude()) {
        mAltitudeView.setText(doubleToString(location.getAltitude(), 1) + " m");
    } else {
        mAltitudeView.setText("");
    }
    if (location.hasAccuracy()) {
        mAccuracyView.setText(doubleToString(location.getAccuracy(), 1) + " m");
    } else {
        mAccuracyView.setText("");
    }
    if (location.hasSpeed()) {
        mSpeedView.setText(doubleToString(location.getSpeed(), 1) + " m/sec");
    } else {
        mSpeedView.setText("");
    }
    if (location.hasBearing()) {
        mBearingView.setText(doubleToString(location.getBearing(), 1) + " deg");
    } else {
        mBearingView.setText("");
    }

    updateFixTime();
}


@Override
public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}


 private static String doubleToString(double value, int decimals) {
        String result = Double.toString(value);
        // truncate to specified number of decimal places
        int dot = result.indexOf('.');
        if (dot > 0) {
            int end = dot + decimals + 1;
            if (end < result.length()) {
                result = result.substring(0, end);
            }
        }
        return result;
    }

 private void updateStatus(GpsStatus status) {

        setStarted(true);
        // update the fix time regularly, since it is displaying relative time
        updateFixTime();

        Iterator<GpsSatellite> satellites = status.getSatellites().iterator();

        if (mPrns == null) {
            int length = status.getMaxSatellites();
            mPrns = new int[length];
            mSnrs = new float[length];
            mSvElevations = new float[length];
            mSvAzimuths = new float[length];
        }

        mSvCount = 0;
        mEphemerisMask = 0;
        mAlmanacMask = 0;
        mUsedInFixMask = 0;
        while (satellites.hasNext()) {
            GpsSatellite satellite = satellites.next();
            int prn = satellite.getPrn();
            int prnBit = (1 << (prn - 1));
            mPrns[mSvCount] = prn;
            mSnrs[mSvCount] = satellite.getSnr();
            mSvElevations[mSvCount] = satellite.getElevation();
            mSvAzimuths[mSvCount] = satellite.getAzimuth();
            if (satellite.hasEphemeris()) {
                mEphemerisMask |= prnBit;
            }
            if (satellite.hasAlmanac()) {
                mAlmanacMask |= prnBit;
            }
            if (satellite.usedInFix()) {
                mUsedInFixMask |= prnBit;
            }
            mSvCount++;
            //satFixed.setText(mSvCount);
        }

        mAdapter.notifyDataSetChanged();
    }

    @SuppressLint("NewApi")
    private void updateTtff(Location location){
        long ttff;

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //According to Android docs, elapsedRealtimeNanos() is preferred for elapsed time measurements
            ttff = location.getElapsedRealtimeNanos() - mGpsStartTime;  //TTFF in nanoseconds 
            ttff = (ttff + 500000000) / 1000000000;
        } else {
            ttff = location.getTime() - mGpsStartTime;  //TTFF in milliseconds
            ttff = (ttff + 500) / 1000;         
        }               
        mTTFFView.setText(Long.toString(ttff) + " sec");            
    }

    private class SvGridAdapter extends BaseAdapter {
        public SvGridAdapter(Context c) {
            mContext = c;
        }

        public int getCount() {
            // add 1 for header row
            return (mSvCount + 1) * COLUMN_COUNT;
        }

        public Object getItem(int position) {
            Log.d(TAG, "getItem(" + position + ")");
            return "foo";
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            TextView textView;
            if (convertView == null) {
                textView = new TextView(mContext);
            } else {
                textView = (TextView) convertView;
            }

            int row = position / COLUMN_COUNT;
            int column = position % COLUMN_COUNT;
            CharSequence text = null;

            if (row == 0) {
                switch (column) {
                    case PRN_COLUMN:
                        text = mRes.getString(R.string.gps_prn_column_label);
                        break;
                    case SNR_COLUMN:
                        text = mRes.getString(R.string.gps_snr_column_label);
                        break;
                    case ELEVATION_COLUMN:
                        text = mRes.getString(R.string.gps_elevation_column_label);
                        break;
                    case AZIMUTH_COLUMN:
                        text = mRes.getString(R.string.gps_azimuth_column_label);
                        break;
                    case FLAGS_COLUMN:
                        text = mRes.getString(R.string.gps_flags_column_label);
                        break;
                }
            } else {
                row--;
                switch (column) {
                    case PRN_COLUMN:
                        text = Integer.toString(mPrns[row]);
                        break;
                    case SNR_COLUMN:
                        text = Float.toString(mSnrs[row]);
                        break;
                    case ELEVATION_COLUMN:
                        text = Float.toString(mSvElevations[row]);
                        break;
                    case AZIMUTH_COLUMN:
                        text = Float.toString(mSvAzimuths[row]);
                        break;
                    case FLAGS_COLUMN:
                        char[] flags = new char[3];
                        flags[0] = ((mEphemerisMask & (1 << (mPrns[row] - 1))) == 0 ? ' ' : 'E');
                        flags[1] = ((mAlmanacMask & (1 << (mPrns[row] - 1))) == 0 ? ' ' : 'A');
                        flags[2] = ((mUsedInFixMask & (1 << (mPrns[row] - 1))) == 0 ? ' ' : 'U');
                        text = new String(flags);
                        break;
                }
           }

           textView.setText(text);

            return textView;
        }

        private Context mContext;
    }   
4

1 回答 1

0

也许您应该在这里查看Android 应用程序的生命周期

于 2013-09-04T23:44:53.153 回答