2013-07-08 3 views
1

Sliding MenuActionBar Sherlock으로 Android 앱을 개발 중입니다.슬라이딩 메뉴를 열 수 없습니다

나는 이것을 내 프로젝트에 추가하기 위해 Spanish tutorial을 따라갔습니다. 내가 사용해야

1.해야 할 것 :

public class MenuFragment extends ListFragment { 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.menu_list, null); 
    } 

    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     SampleAdapter adapter = new SampleAdapter(getActivity()); 
     for (int i = 0; i < 20; i++) { 
      adapter.add(new SampleItem("Sample List", android.R.drawable.ic_menu_search)); 
     } 
     setListAdapter(adapter); 
    } 

    private class SampleItem { 
     public String tag; 
     public int iconRes; 
     public SampleItem(String tag, int iconRes) { 
      this.tag = tag; 
      this.iconRes = iconRes; 
     } 
    } 

    public class SampleAdapter extends ArrayAdapter<SampleItem> { 

     public SampleAdapter(Context context) { 
      super(context, 0); 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      if (convertView == null) { 
       convertView = LayoutInflater.from(getContext()).inflate(R.layout.menu_row, null); 
      } 
      ImageView icon = (ImageView) convertView.findViewById(R.id.row_icon); 
      icon.setImageResource(getItem(position).iconRes); 
      TextView title = (TextView) convertView.findViewById(R.id.row_title); 
      title.setText(getItem(position).tag); 

      return convertView; 
     } 
    } 
} 

나는 질문의 몇 가지있다 :

내 코드입니다 :

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; 
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; 

import android.os.Bundle; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.view.View; 

public class MainActivity extends SlidingFragmentActivity 
{ 
    /** 
    * Used as TAG on Log messages. 
    */ 
    public static final String TAG = "MainActivity"; 
    private SlidingMenu menu; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Generate keys to encrypt and decrypt user password. 
     generateCryptoKeys(); 

     setBehindContentView(R.layout.menu); 

     setSlidingActionBarEnabled(false);   

     menu = new SlidingMenu(this); 
     menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
     menu.setShadowWidthRes(R.dimen.shadow_width); 
     menu.setShadowDrawable(R.drawable.shadow); 
     menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
     menu.setFadeDegree(0.35f); 
     menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 

     getSupportActionBar().setDisplayShowCustomEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
} 

그리고 이것은 메뉴 단편 조각?
2. 홈 버튼을 클릭하면 왜 메뉴가 열리지 않습니까?

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     toggle(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

: 나는이 작업을 수행 할 때,

Go into the SlidingActivities that you plan on using make them extend Sherlock___Activity instead of ___Activity. 

그리고 : 나는이 작업을 수행 한 메뉴를 슬라이딩으로 작업 표시 줄 셜록를 통합하는

enter image description here

: 다음 이미지보기 이 오류가 발생합니다 :

Cannot override the final method from SherlockFragmentActivity. 그런

답변

2
  1. Do I have to use fragments?

예, 라이브러리는 그것을 위해 내장되어 있습니다. 또한 동시에 두 개의 활동이 포 그라운드에있을 수 없습니다.

2 . Why I can't open the menu when I click on home button?

이것은 버튼이 슬라이딩 메뉴를 열지 않기 때문입니다.

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

은 뒤로 버튼과 앱 아이콘을 가능하게 할 것이다. 이것은 스택에서 되돌아갑니다. Navigation을 참조하십시오. 당신의 slindermenu는 당신의 활동의 측면에 놓여져있는 조각입니다, 그러므로 그것들은 같은 순간에 움직입니다, 그래서 어떤 탐색과도 관련이 없습니다.

메뉴를 열려면 호출 할 필요가 : 당신이 onOptionsItemSelected를 오버라이드 (override) 할 경우

SlidingMenu sm = getSlidingMenu(); 
    sm.toggle();//or .open(); 

, 당신이 필요합니다

extends SlidingFragmentActivity 

슬라이딩 메뉴 라이브러리를 수정합니다. 모든 단편을 셜록 라이브러리 관련 단편에서 확장하십시오. (btw 이것은 docs아래에 작성 됨 ActionBarSherlock으로 설정).

+0

답변 해 주셔서 감사합니다. 그러나 다음을 수행하십시오. 메뉴? – VansFannel

+0

이렇게하면 :'public boolean onOptionsItemSelected (com.actionbarsherlock.view.MenuItem item)', 슬라이딩 메뉴를 열 수 있습니다. – VansFannel

3

를 사용하여 뭔가를해야만이 :

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     menu.toggle(); 

     return true; 
    } 
+0

나는 그렇게 할 수 없다. 시도했지만이 오류가 발생합니다 :'SherlockFragmentActivity'의 마지막 메서드를 무시할 수 없습니다. – VansFannel

+0

가져 오기에서 "메뉴"가져 오기를 삭제하고 'com.actionbarsherlock.view. *.'로 바꾸십시오. 잘못된 패키지를 가져올 수 있습니다. – marshallino16