Ответ 1
Когда вы используете android.support.v4.app.DialogFragment
, вы должны передать show()
экземпляр android.support.v4.app.FragmentManager
, который можно запросить с помощью вызова getSupportFragmentManager()
. Надеюсь, это поможет.
Я получаю сообщение об ошибке
Метод
show(FragmentManager, String)
в типеDialogFragment
неприменим для аргументов(FragmentManager, String)
package com.example.test1;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view) {
DialogFragment newFragment = new FireMissilesDialogFragment();
newFragment.show(getFragmentManager(), "missiles");
}
public boolean onCreateOtionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Когда вы используете android.support.v4.app.DialogFragment
, вы должны передать show()
экземпляр android.support.v4.app.FragmentManager
, который можно запросить с помощью вызова getSupportFragmentManager()
. Надеюсь, это поможет.
Проблема заключается в том, что вам нужно использовать пакет поддержки FragmentManager, но вы используете собственный FragmentManager при вызове getFragmentManager(). Попробуйте вызвать getSupportFragmentManager() при инициализации переменной fm
вам также необходимо убедиться, что вы включили DialogFragment из пакета Support, а не из собственного пакета.
Вы можете сделать это, импортировав
import android.support.v4.app.DialogFragment;
У меня была такая же проблема при запуске кода в прянике. Но отлично работает для ICS. Решение:
вместо этого:
public class MainActivity extends Activity {
}
use extends FragmentActivty
public class MainActivity extends FragmentActivity {
}
Вы должны использовать android.support.v4.app.FragmentManager
вместо android.app.FragmentManager
.
Затем вы должны вызвать getSupportFragmentManager()
, но не getFragmentManager()
Я получил это при открытии DialogFragment
, хотя я не использовал android.support.v4.app.DialogFragment
. Мне пришлось называть getActivity().getFragmentManager()
, потому что getSupportFragmentManager()
не работал.
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnselectDate:
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(this.getFragmentManager(), "datePicker");
break;
default:
break;
}
}