2
我已經RelativeLayout
內DrawerLayout
這是我的xml文件:誤差DrawerLayout和RelativeLayout的
activity_main.xml中
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.wunderlist.slidinglayer.SlidingLayer
android:id="@+id/slidingLayer1"
android:layout_width="@dimen/layer_size"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#14ad8f"
>
<Button
android:id="@+id/buttonClose"
style="@style/ButtonRed"
android:onClick="buttonClicked"
android:layout_marginBottom="60dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="@string/close_button_container"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Nosaukums"
android:id="@+id/fragNosaukums" />
</RelativeLayout>
</com.wunderlist.slidinglayer.SlidingLayer>
<FrameLayout android:id="@+id/container" android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.wunderlist.slidinglayersample.NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer" />
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<!--android:name="com.wunderlist.slidinglayersample.NavigationDrawerFragment"-->
</android.support.v4.widget.DrawerLayout>
這是我的Java代碼:
MainActivity.java:
public class MainActivity extends ActionBarActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks {
private NavigationDrawerFragment mNavigationDrawerFragment;
private CharSequence mTitle;
private GoogleMap googleMap;
private String urlJsonObj = "http://api.androidhive.info/volley/person_object.json";
private String urlJsonArry = "http://heimerdinger.pe.hu/getjson.php";
private static String TAG = MainActivity.class.getSimpleName();
private ProgressDialog pDialog;
Content content = new Content();
public static String valueEntered;
private String jsonResponse;
private SlidingLayer mSlidingLayer;
private TextView swipeText, fragNosaukums;
public String name;
public Marker marker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
// Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
// fragNosaukums = (TextView) findViewById(R.id.fragNosaukums);
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.getUiSettings();
googleMap.getUiSettings().setZoomControlsEnabled(true);
googleMap.setMyLocationEnabled(true);
bindViews();
initState();
mSlidingLayer.bringToFront();
redirect();
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.showInfoWindow();
String title = marker.getTitle();
fragNosaukums.setText(title);
mSlidingLayer.openLayer(true);
return true;
}
});
}
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
.commit();
}
public void onSectionAttached(int number) {
switch (number) {
case 1:
mTitle = getString(R.string.title_section1);
break;
case 2:
mTitle = getString(R.string.title_section2);
break;
case 3:
mTitle = getString(R.string.title_section3);
break;
}
}
public void restoreActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
}
public static class PlaceholderFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
/**
* Returns a new instance of this fragment for the given section
* number.
*/
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached(
getArguments().getInt(ARG_SECTION_NUMBER));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@SuppressLint("NewApi")
@Override
protected void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActionBar().setDisplayHomeAsUpEnabled(true);
}
}
/**
* View binding
*/
private void bindViews() {
mSlidingLayer = (SlidingLayer) findViewById(R.id.slidingLayer1);
// swipeText = (TextView) findViewById(R.id.swipeText);
}
/**
* Initializes the origin state of the layer
*/
private void initState() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
setupSlidingLayerPosition(prefs.getString("layer_location", "right"));
setupShadow(prefs.getBoolean("layer_has_shadow", false));
setupLayerOffset(prefs.getBoolean("layer_has_offset", false));
setupPreviewMode(prefs.getBoolean("preview_mode_enabled", false));
}
private void setupSlidingLayerPosition(String layerPosition) {
DrawerLayout.LayoutParams rlp = (DrawerLayout.LayoutParams) mSlidingLayer.getLayoutParams();
int textResource;
Drawable d;
// if (layerPosition.equals("right")) {
textResource = R.string.swipe_right_label;
d = getResources().getDrawable(R.drawable.container_rocket_right);
mSlidingLayer.setStickTo(SlidingLayer.STICK_TO_RIGHT);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
// swipeText.setCompoundDrawables(null, d, null, null);
// swipeText.setText(getResources().getString(textResource));
mSlidingLayer.setLayoutParams(rlp);
}
private void setupShadow(boolean enabled) {
if (enabled) {
mSlidingLayer.setShadowSizeRes(R.dimen.shadow_size);
mSlidingLayer.setShadowDrawable(R.drawable.sidebar_shadow);
} else {
mSlidingLayer.setShadowSize(0);
mSlidingLayer.setShadowDrawable(null);
}
}
private void setupLayerOffset(boolean enabled) {
int offsetDistance = enabled ? getResources().getDimensionPixelOffset(R.dimen.offset_distance) : 0;
mSlidingLayer.setOffsetDistance(offsetDistance);
}
private void setupPreviewMode(boolean enabled) {
int previewOffset = enabled ? getResources().getDimensionPixelOffset(R.dimen.preview_offset_distance) : -1;
mSlidingLayer.setPreviewOffsetDistance(previewOffset);
}
public void buttonClicked(View v) {
switch (v.getId()) {
// case R.id.buttonOpen:
// mSlidingLayer.openLayer(true);
// break;
// case R.id.buttonClose:
// mSlidingLayer.closeLayer(true);
// break;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (mSlidingLayer.isOpened()) {
mSlidingLayer.closeLayer(true);
return true;
}
default:
return super.onKeyDown(keyCode, event);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.addNewEvent:
Intent intent = new Intent(this, AddEvent.class);
startActivity(intent);
;
case android.R.id.home:
//Do stuff
//mDrawerLayout.openDrawer(Gravity.LEFT);
return true;
}
return true;
}
}
這是我運行應用程序時得到的錯誤。
logcat的
04-18 17:39:13.878: E/AndroidRuntime(6607): FATAL EXCEPTION: main
04-18 17:39:13.878: E/AndroidRuntime(6607): Process: com.wunderlist.slidinglayersample, PID: 6607
04-18 17:39:13.878: E/AndroidRuntime(6607): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wunderlist.slidinglayersample/com.wunderlist.slidinglayersample.MainActivity}: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.ActivityThread.access$800(ActivityThread.java:144)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.os.Handler.dispatchMessage(Handler.java:102)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.os.Looper.loop(Looper.java:135)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.ActivityThread.main(ActivityThread.java:5221)
04-18 17:39:13.878: E/AndroidRuntime(6607): at java.lang.reflect.Method.invoke(Native Method)
04-18 17:39:13.878: E/AndroidRuntime(6607): at java.lang.reflect.Method.invoke(Method.java:372)
04-18 17:39:13.878: E/AndroidRuntime(6607): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
04-18 17:39:13.878: E/AndroidRuntime(6607): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
04-18 17:39:13.878: E/AndroidRuntime(6607): Caused by: java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:1126)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.support.v4.widget.DrawerLayout.closeDrawer(DrawerLayout.java:1331)
04-18 17:39:13.878: E/AndroidRuntime(6607): at com.wunderlist.slidinglayersample.MainActivity.onCreate(MainActivity.java:85)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.Activity.performCreate(Activity.java:5937)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
04-18 17:39:13.878: E/AndroidRuntime(6607): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
它並沒有真正面對過這個問題。我試圖改變RelativeLayout和DrawerLayout的位置,但它沒有奏效。我想這個問題可能在java文件中。有沒有人有任何想法如何解決這個問題?
它並沒有改變任何東西 – AndroidFreak
您可以調試該行並檢查什麼類型'mSlidingLayer'是什麼? – AlexWalterbos
這就是代碼 – AndroidFreak