2014-12-28 4 views
0

Я пытаюсь бросить деятельность на объект FragmentActivty, чтобы я мог получить FragmentManager объектIllegalStateException во время литья контекст

public class Main extends ListActivity { 
... 
    public void showTimePickerDialog(View v) { 
     FragmentActivity myContext=(FragmentActivity) getApplicationContext(); //Here: java.lang.IllegalStateException: Could not execute method of the activity 

     FragmentManager fragManager = myContext.getFragmentManager(); 
     DialogFragment newFragment = new uSharedUtility.TimePickerFragment(); 
     newFragment.show(fragManager, "timePicker"); 
    } 
} 

Но, делая это, я получаю:

java.lang.IllegalStateException: Could not execute method of the activity 

Я не могу использовать getFragmentManager напрямую потому что моя деятельность простирается от ListActivity, что очень необходимо.

Пожалуйста, предложите мне обойти эту ошибку, мне действительно нужно использовать оба параметра ListAdapter & Выбор даты/времени в том же действии.

+0

'IllegalStateException' не возникает из-за литья; он бросается, когда вы пытаетесь вызвать метод и заявляет, что этот метод зависит от того, что они должны быть. Во всяком случае, вы получите «ClassCastException» –

+0

@VinceEmigh Исключение основной причины завернуто в «IllegalStateException» wheb, например. обработчик 'onClick' бросает. – laalto

+0

@laato Мой плохой, не думал об этом. Вот почему полная stacktrace всегда хороша, чтобы иметь –

ответ

1

Я не могу использовать getFragmentManager непосредственно потому, что моя деятельность простирается от ListActivity, что очень необходимо.

Не нужно. Вы можете иметь ListView в любой деятельности.

Поскольку вы уже используете фрагменты, рассмотрите возможность использования ListFragment с FragmentActivity.

+0

методы списка, такие как 'setListAdapter' и' onListItemClick', становятся несовместимыми, когда я расширяю его из 'FragmentActivity' вместо' ListActivity' – Maven

+0

Вы можете вызвать похожие методы непосредственно в ListView. ListFragment. – laalto

+0

если, если расходуется из 'FragmentActivity', я получаю ошибку над этим' super.onListItemClick (l, v, position, id); 'как я могу использовать этот метод? – Maven

1

Вы не можете передавать контекст приложения в действие, вам необходим контекст активности.

(FragmentActivity) getApplicationContext() // Not Possible 

getContext(): возвращает контекст, в котором в настоящее время запущен вид. Обычно активная активность в настоящее время.

getApplicationContext(): возвращает контекст для всего приложения (процесс, в котором все действия запущены внутри). Используйте это вместо текущего контекста Activity, если вам нужен контекст, привязанный к жизненному циклу всего приложения, а не только текущая активность.

+0

'getContext():' i can not найти этот метод в любом месте? можете ли вы связать меня с онлайн-документами для этого? – Maven

+0

Можете ли вы поделиться своим полным классом, в котором вы должны использовать это. Также попробуйте с v.getContext(). –

+0

Я обновил свой вопрос с определением класса, пожалуйста, проверьте, и 'v.getContext()' также дает такую ​​же ошибку – Maven

Смежные вопросы