Я разрабатываю Android-приложение с раздвижным меню.Имеет ли ListActivity действие?
Я создал пользовательский класс для использования в ListFragment
, чтобы показать пункты меню:
public class MenuItem
{
/**
* Title to show on sliding menu.
*/
private String title;
/**
* Activity to start when user select a menu item.
*/
private Class<Activity> activityClass;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Class<Activity> getActivityClass() {
return activityClass;
}
public void setActivityClass(Class<Activity> activityClass) {
this.activityClass = activityClass;
}
}
Это мой ListFragment
:
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.com.msx.R;
import com.com.msx.adapters.MenuAdapter;
import com.com.msx.menu.MenuItem;
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);
ArrayList<MenuItem> menuItems = getMenuItems();
MenuAdapter adapter = new MenuAdapter(getActivity(),
R.layout.menu_row, menuItems);
setListAdapter(adapter);
}
/**
* Get menu items to show on Sliding menu.
* @return
*/
private ArrayList<MenuItem> getMenuItems()
{
String[] titles = {
getActivity().getString(R.string.menu_item_my_lovers),
getActivity().getString(R.string.menu_item_my_friends),
getActivity().getString(R.string.menu_item_geo_sex_locator),
getActivity().getString(R.string.menu_item_sex_affinity),
getActivity().getString(R.string.menu_item_messages),
getActivity().getString(R.string.menu_item_statistics)
};
// TODO: Add icons for each menu item.
ArrayList<Class<? extends Activity>> activities = new ArrayList<Class<? extends Activity>>(titles.length);
activities.add(SelectFriendsActivity);
ArrayList<MenuItem> items = new ArrayList<MenuItem>(titles.length);
for(int i = 0; i < titles.length; i++)
{
MenuItem item = new MenuItem();
item.setTitle(titles[i]);
// TODO: Set icon.
items.add(item);
}
return items;
}
}
И теперь, я пытаюсь заполнить ListFragment
Листа адаптер с пользовательским номером ArrayAdapter
. Но когда я пытаюсь сделать это:
ArrayList<Class<Activity>> activities = new ArrayList<Class<Activity>>(titles.length);
activities.add((Class<Activity>)SelectFriendsActivity.class);
я получаю эти ошибки два компилятора:
Cannot cast from Class<SelectFriendsActivity> to Class<Activity>
SelectFriendsActivity cannot be resolved to a type
Если я это сделать:
ArrayList<Class<? extends Activity>> activities = new ArrayList<Class<? extends Activity>>(titles.length);
activities.add(SelectFriendsActivity.class);
Я получаю эту ошибку компилятора:
The method add(Class<? extends Activity>) in the type ArrayList<Class<? extends Activity>>
is not applicable for the arguments (Class<SelectFriendsActivity>)
SelectFriendsActivity
имеет этот прото Тип:
public class SelectFriendsActivity extends android.app.ListActivity
Но если я изменю SelectFriendsActivity.class для MainActivity.class (который расширяет активность) это работает!
Что происходит?
Declare 'Список л = новый ArrayList ()', 'не ArrayList л = ...' –
fge