Я делаю преобразование из 2 кланов, которое extends ListActivity
- extend ListFragment
из-за предложений кода.Кодовые переводы от активности к фрагменту
Как я знаю, Фрагмент связан с деятельностью, поэтому сначала с помощью getActivity()...
следует выполнить работу по адаптации большинства методов. В других случаях я определил Activity activity_context;
, и я использую это.
Во всяком случае, у меня есть некоторые функции, которые я не могу адаптировать, и мне нужна была какая-то помощь.
Первый:RecentCallsListActivity extends Fragment
public class RecentCallsListActivity extends ListFragment
...
private static final class QueryHandler extends AsyncQueryHandler {
private final WeakReference<RecentCallsListActivity> mActivity;
...
public QueryHandler(Context context) {
super(context.getContentResolver());
mActivity = new WeakReference<RecentCallsListActivity>(
(RecentCallsListActivity) context); //GETTING THE ERROR HERE
}
ОШИБКА: не может бросить из контекста RecenCallsListActivity
public void onActivityCreated(Bundle state) {
super.onActivityCreated(state);
mQueryHandler = new QueryHandler(activity_context);
Второй:CallDetailActivity extends Fragment
public class CallDetailActivity extends ListFragment
...
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_CALL: {
// Make sure phone isn't already busy before starting direct call
TelephonyManager tm = (TelephonyManager)
getActivity().getSystemService(Context.TELEPHONY_SERVICE);
if (tm.getCallState() == TelephonyManager.CALL_STATE_IDLE) {
Intent callIntent = new Intent(Intent.ACTION_CALL,
Uri.fromParts("tel", mNumber, null));
startActivity(callIntent);
return true;
}
}
}
return super.onKeyDown(keyCode, event); //GETTING IT HERE
}
ОШИБКА: Метод OnKeyDown (интермедиат, KeyEvent) не определено для типа ListFragment
Где вы звоните 'QueryHandler' и что параметр? ... как выглядящий в вашем коде, это должен быть класс, который является или расширяет 'RecentCallsActivity'. Для второй ошибки вам необходимо делегировать вызов из Activity на ваш фрагмент. – gunar
@gunar. Для первого: 'QueryHandler' находится в классе« RecentCallsActivity », и я вызываю его на' onActivityCreated' таким образом 'mQueryHandler = new QueryHandler (activity_context); «Для второго: я не понимаю, что вы имеете в виду, можете ли вы сделать простой пример того, как это сделать? Я приму ваш ответ, если работает – masmic