资源是在附加的堆栈跟踪中获取的,但在使用jeremyfeinstein启动启动屏幕后从未发布

时间:2016-01-10 09:41:43

标签: android slidingmenu

目前我需要创建一个壁纸应用程序。我需要在进入主屏幕之前启动闪屏。我的主屏幕是使用slidingmenu参考开发的。但是,在启动启动画面后,我有以下错误:请提供建议和帮助。谢谢!!

运行启动画面后启动片段活动后出错

    E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
   java.lang.Throwable: Explicit termination method 'end' not called
              at dalvik.system.CloseGuard.open(CloseGuard.java:184)
              at java.util.zip.Inflater.<init>(Inflater.java:82)
              at com.android.okio.GzipSource.<init>(GzipSource.java:57)

启动画面活动

public class SplashScreen extends SherlockActivity {
    // Splash screen timer
    private static int SPLASH_TIME_OUT = 2000;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    new Handler().postDelayed(new Runnable() {

        /*
         * Showing splash screen with a timer. This will be useful when you
         * want to show case your app logo / company
         */

        @Override
        public void run() {
            // This method will be executed once the timer is over
            // Start your app main activity
            Intent i = new Intent(SplashScreen.this, FragmentChangeActivity.class);
            startActivity(i);

            // close this activity
            finish();
        }
    }, SPLASH_TIME_OUT);
}

}

片段活动

public class FragmentChangeActivity extends MainActivity {

    private Fragment mContent;

public FragmentChangeActivity() {
    super(R.string.changing_fragments);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // set the Above View
    if (savedInstanceState != null)
        mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
    if (mContent == null)
        mContent = new ColorFragment(R.color.red);

    // set the Above View
    setContentView(R.layout.content_frame);
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame, mContent)
            .commit();

    // set the Behind View
    setBehindContentView(R.layout.menu_frame);
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.menu_frame, new ColorMenuFragment())
            .commit();

    // customize the SlidingMenu
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    getSupportFragmentManager().putFragment(outState, "mContent", mContent);
}

public void switchContent(Fragment fragment) {
    mContent = fragment;
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame, fragment)
            .commit();
    getSlidingMenu().showContent();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.share:
            new AlertDialog.Builder(this)
                    .setTitle(R.string.share)
                    .setMessage(Html.fromHtml(getString(R.string.apache_license)))
                    .show();
            break;
        case R.id.info:
            new AlertDialog.Builder(this)
                    .setTitle(R.string.info)
                    .setMessage(Html.fromHtml(getString(R.string.about_msg)))
                    .show();
            break;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.example_list, menu);
    return true;
}
}

2 个答案:

答案 0 :(得分:0)

删除

public MainActivity(int titleRes) {
    mTitleRes = titleRes;
}

使用no-arg构造函数实例化活动类,并且您的活动没有它。声明显式构造函数可防止生成隐式no-arg构造函数。

要将参数传递给活动,请将附加内容BundleIntent一起使用。 Start an Activity with a parameter

答案 1 :(得分:0)

我现在可以显示启动画面。这是代码:

public class PictureFragment extends SherlockFragment {

// Splash screen timer
private static int SPLASH_TIME_OUT = 2000;


@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_splash, container, false);


    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            Intent i = new Intent(getActivity(), FragmentChangeActivity.class);
            startActivity(i);
            getActivity().finish();
        }
    }, SPLASH_TIME_OUT);
    return view;
}

以下是显示启动画面图像的代码

public class MapFragment extends Fragment implements OnMapReadyCallback{

SupportMapFragment mSupportMapFragment;
int radius = 20;
double mLatitude;
double mLongitude;

public double getLatitude() {
    return mLatitude;
}

public double getLongitude() {
    return mLongitude;
}

private GoogleMap maps;
     @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    mSupportMapFragment = SupportMapFragment.newInstance();
    android.support.v4.app.FragmentManager sfm = getFragmentManager();
    mSupportMapFragment.getMapAsync(this);
    if(!mSupportMapFragment.isAdded())
    sfm.beginTransaction().add(R.id.map_frag,mSupportMapFragment).commit();

   else if(mSupportMapFragment.isAdded())
        sfm.beginTransaction().hide(mSupportMapFragment).commit();
    else
        sfm.beginTransaction().show(mSupportMapFragment).commit();







    LocationManager mLocationManager;
    LocationListener mLocationListener;
    mLocationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {

                /*
                Updates to our map may need to be taken place here. Need to listen to other devices in the area.
                 */

                Log.e("Latitude: ", "" + location.getLatitude());
                Log.e("Longitude: ", "" + location.getLongitude());
                maps.clear(); //Clear the map of any  existing markers
                mLatitude = location.getLatitude();//Get coordinates stored into local variables
                mLongitude = location.getLongitude();

               LatLng latLng = new LatLng(mLatitude,mLongitude);//Create a "LatLng" object consisting of these coordinates

                MarkerOptions mp1 = new MarkerOptions();//Instantiate a new "MarkerOptions" where we will be able to define a...
                                                        //...marker

                mp1.position(new LatLng(location.getLatitude(),//Customizing marker...
                        location.getLongitude()));
                 mp1.title("You");
                maps.addMarker(mp1);//Finally add the marker to the map
                maps.moveCamera(CameraUpdateFactory.newLatLng(latLng));//Move camera to markers location using our "latLng" variable
                maps.animateCamera(CameraUpdateFactory.zoomTo(20));// Zoom, (between 2.0 - 21.0) the higher, the more zoomed in

            }
        }

        @Override
        public void onStatusChanged(String s, int i, Bundle bundle) {

        }

        @Override
        public void onProviderEnabled(String s) {

        }

        @Override
        public void onProviderDisabled(String s) {

        }
    };

    mLocationManager = (LocationManager)     getActivity().getSystemService(Context.LOCATION_SERVICE);
        mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,120000,radius,mLocationListener);


    return inflater.inflate(R.layout.fragment_map, container, false);
}

@Override
public void onMapReady(GoogleMap map) {
    maps = map;
 }
}

}