Ящик андроид-навигации не открывается при изменении активности

Это странно, я провожу последние 5 часов, ничего не получалось. проблема заключается в следующем: когда я перехожу из действия a к занятию b, нажимаю кнопку "Назад" и возвращаюсь к занятию a, ящик навигации не открывается. это код:

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:

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.

Не могли бы вы помочь мне решить это?

Спасибо вам

1 ответ

Это

пытается использовать метод open() из класса Abstract, и вы используете "mDrawerLayout", и это должно быть нулевым в данный момент, я думаю,

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

может быть, вы используете

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

Тогда вы будете использовать открытый метод вашей текущей деятельности

И вы должны реализовать onClickListener в Activity

Сообщение об ошибке было бы хорошо, чтобы получить больше информации об ошибке

Другие вопросы по тегам