0

이상하게 보입니다. 지난 5 시간을 보내고 아무 것도 효과가 없습니다. 문제는 이것입니다. 활동 a에서 활동 b로 돌아가서 뒤로 버튼을 누르고 활동 a로 돌아 가면 탐색 서랍이 열리지 않습니다.android-navigation 서랍이 활동 변경시 열리지 않습니다.

public abstract class DrawerActivity extends ActionBarActivity { 
static LinearLayout fullLayout; 
static FrameLayout actContent; 
static DrawerLayout mDrawerLayout; 
static ListView mDrawerList; 
static ActionBarDrawerToggle mDrawerToggle; 
static LinearLayout mDrawer; 
List<HashMap<String, String>> mList; 
SimpleAdapter mAdapter; 
final private String COUNTRY = "country"; 
final private String FLAG = "flag"; 
final private String COUNT = "count"; 
@Override 
public void setContentView(final int layoutResID) { 
    fullLayout= (LinearLayout) getLayoutInflater().inflate(R.layout.act_layout, null); // Your base layout here 
    actContent= (FrameLayout) fullLayout.findViewById(R.id.act_content); 
    getLayoutInflater().inflate(layoutResID, actContent, true); // Setting the content of layout your provided to the act_content frame 
    super.setContentView(fullLayout); 
     makelist(); 
    } 
     mTitle = (String) getTitle(); 

     // Getting a reference to the drawer listview 
     mDrawerList = (ListView) findViewById(R.id.drawer_list); 

     // Getting a reference to the sidebar drawer (Title + ListView) 
     mDrawer = (LinearLayout) findViewById(R.id.drawer); 

     // Each row in the list stores country name, count and flag 
     mList = new ArrayList<HashMap<String, String>>(); 
     for (int i = 0; i < mCountries.length; i++) { 
      HashMap<String, String> hm = new HashMap<String, String>(); 
      hm.put(COUNTRY, mCountries[i]); 
      hm.put(FLAG, Integer.toString(mFlags[i])); 
      mList.add(hm); 
     } 
     String[] from = { FLAG, COUNTRY }; 
     int[] to = { R.id.flag, R.id.country }; 
     mAdapter = new SimpleAdapter(this, mList, R.layout.drawer_layout, from,to); 

     // Getting reference to DrawerLayout 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_navigation_drawer, R.string.drawer_open,R.string.drawer_close) { 

      /** Called when drawer is closed */ 
      public void onDrawerClosed(View view) { 
       highlightSelectedCountry(); 
       supportInvalidateOptionsMenu(); 
      } 

      /** Called when a drawer is opened */ 
      public void onDrawerOpened(View drawerView) { 
       supportInvalidateOptionsMenu(); 
      } 

      @Override 
      public boolean onOptionsItemSelected(MenuItem item) { 
       if (item != null && item.getItemId() == android.R.id.home) { 
        if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { 
         mDrawerLayout.closeDrawer(Gravity.RIGHT); 
         Log.v("this","close"); 
        } else { 
         mDrawerLayout.openDrawer(Gravity.RIGHT); 
        } 
       } 
       return false; 
      } 


     }; 

     // Setting event listener for the drawer 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
     mDrawerList.setAdapter(mAdapter); 
    } 
    public static boolean open() { 
     if (mDrawerLayout.isDrawerOpen(mDrawer)) { 
      mDrawerLayout.closeDrawer(Gravity.RIGHT); 
      return true; 
     } else { 
      mDrawerLayout.openDrawer(Gravity.RIGHT); 
      return true; 
     } 
    } 

이있다 MainActivity 클래스 : I 통지 할

public class MainActivity extends DrawerActivity implements OnClickListener { 

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

    //suppose this is the imageview on the actionbar 
     ImageView img=(ImageView)dialogg.findViewById(R.id.img); 
     dateup.img(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
        DrawerActivity.open();     
      } 
     }); 
} 

한 가지의 mainActivity이 DrawerActivity 클래스를 확장 이 코드입니다.

해결해 주시겠습니까?

덕분에 당신에게

+0

이 onRestart ('에서 서랍을 열려고 오류에 대한 자세한 정보를 얻을 좋을 것이다') 활동에 OnClickListener를 구현해야의' –

+0

를 ActivityA' 그것은 효과가 있을지 모르지만 나는 누군가가 활동에 올 때마다 열어주기를 원하지 않는다. – mohsen

+0

나는 당신이 말한 것을 시도했다, 내가 활동 a로 돌아 왔을 때, 그것은 즉시 열고 닫는다. 내 mainactivity에있는 모든 코드를 제거하지만 같은 당신은 UI 구성 요소에 대한 정적 속성을 사용해서는 안 – mohsen

답변

0
추상 클래스에서 열려() 메소드를 사용하는

할려고하고 "mDrawerLayout"를 사용하고는이 순간에 null이어야합니다 나는

public void onClick(View v) { 
    DrawerActivity.open();     
} 

생각 어쩌면 당신이 사용 할지도 모른다

public void onClick(View v) { 
    this.open();     
} 

그리고 당신은 당신의 현재의 열린 방법을 사용할 것이다 활동

그리고 당신은

오류 MSG가

+0

답장을 보내 주셔서 감사합니다. DrawerActivity.open();을 호출합니다. mainAcitivty에,이게 아니라고 확신합니다. open(); 오류가 없으며 메뉴를 열지 않습니다. – mohsen