#java #android
#java #Android
Вопрос:
Я пытаюсь использовать плавающую кнопку действия во фрагменте, чтобы вызвать диалоговое окно для создания новой записи. Проблема, с которой я сталкиваюсь, заключается в том, что я получаю ошибку в этой строке кода:
popAddPost = new Dialog(this);
В ошибке указано, что:
Dialog (android.content.context) in Dialog cannot be applied to (com.comhar.firebaseapp.Fragments.ForumFragment)
Я пробовал использовать несколько решений, которые нашел в Интернете, но ни одно из них не сработало
ForumFragment.java
public class ForumFragment extends Fragment {
Dialog popAddPost;
public ForumFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_forum, container, false);
iniPopup();
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popAddPost.show();
}
});
return view;
}
private void iniPopup() {
popAddPost = new Dialog(this);
popAddPost.setContentView(R.layout.popup_add_post);
popAddPost.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popAddPost.getWindow().setLayout(Toolbar.LayoutParams.MATCH_PARENT,Toolbar.LayoutParams.WRAP_CONTENT);
popAddPost.getWindow().getAttributes().gravity = Gravity.TOP;
}
}
fragment_forum.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Fragments.ForumFragment">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="forum" />
<android.support.design.widget.FloatingActionButton
android:id="@ id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="20dp"
android:src="@drawable/nep_post" />
</FrameLayout>
Приложение не будет запускаться, поскольку я получаю сообщение об ошибке:
error: incompatible types: ForumFragment cannot be converted to Context
буду признателен за любой совет!
Комментарии:
1. привет @cian404, ты пробовал мой ответ ниже? помогло ли это вам решить вашу проблему? если это произошло, пожалуйста, подумайте о том, чтобы отметить мой ответ как принятый, щелкнув стрелку слева. таким образом, другие также могут извлечь выгоду из решения.
Ответ №1:
Вы должны инициализировать диалоговое окно с соответствующим контекстом, это может быть контекст, в котором находится фрагмент, или может быть действие, которое содержит фрагмент. Итак, замените эту строку:
popAddPost = new Dialog(this);
этим:
popAddPost = new Dialog(getActivity());
Ответ №2:
Обновите свой метод iniPopup () следующим образом:
private void iniPopup() {
popAddPost = new Dialog(getActivity());
popAddPost.setContentView(R.layout.activity_login);
popAddPost.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popAddPost.getWindow().setLayout(Toolbar.LayoutParams.MATCH_PARENT, Toolbar.LayoutParams.WRAP_CONTENT);
popAddPost.getWindow().getAttributes().gravity = Gravity.TOP;
}
Дайте мне знать в случае любого запроса.