Android 活动

Android Activitys

我有在 DrawerClass class 中显示菜单抽屉的代码,这个 class 由所有 Activity 实例化以显示菜单,问题是不喜欢处理每个菜单的 Intents第一个参数,一般是 "theActivity.this" ,这个显然在外部 class 时不起作用,那么你得到了吗?我尝试了 getAplicationContext,将上下文作为参数传递给 class,什么也没有。

主要活动

DrawerClass d=new DrawerClass();
d.crear(listado,getApplicationContext(),getResources().getString(R.string.title_activity_home));

抽屉类

    public void crear(ListView listado, final Context context, final String nom){    
    final ArrayList<String> datos=new ArrayList<String>();
    datos.add(nom);
    ArrayAdapter<String> adapter=new ArrayAdapter<String>(contexto,android.R.layout.simple_list_item_1,datos);
    listado.setAdapter(adapter);

    listado.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
          String valor=datos.get(position);
          if (valor.equals(nom)) {
              Intent home = new Intent(context, HomeActivity.class);
              startActivity(home);
         }
        }
    });
}

您可以将 activity 作为参数传递给函数 crear:

主要活动

DrawerClass d = new DrawerClass();
d.crear(listado, MainActivity.this,
        getResources().getString(R.string.title_activity_home));

抽屉类

public void crear(ListView listado, final Activity activity, final String nom) {    

    final ArrayList<String> datos = new ArrayList<String>();
    datos.add(nom);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            activity, android.R.layout.simple_list_item_1, datos);
    listado.setAdapter(adapter);

    listado.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          String valor = datos.get(position);
          if (valor.equals(nom)) {
              Intent home = new Intent(activity, HomeActivity.class);
              activity.startActivity(home);
         }
        }
    });
}