Начать фрагмент с помощью Intent внутри фрагмента

Я хочу запустить новый фрагмент для просмотра некоторых данных. В настоящее время у меня есть основное действие, в котором есть куча вкладок в панели действий, каждый из которых является фрагментом. Итак, внутри фрагмента вкладки у меня есть кнопка, chartButton. У меня есть мой onclicklistener, все настроенный для него, и вот метод onClick:

public OnClickListener chartsListener = new OnClickListener() { @Override public void onClick(View v) { Intent chartFragment = new Intent(); startActivity(chartFragment); } }; 

Теперь, как я уже сказал, этот слушатель находится внутри класса, который расширяет фрагмент. Итак, я хочу запустить новый фрагмент (chartFragment) с намерением заменить весь экран. Когда пользователь нажмет на него, он вернет их на вкладки и основное действие. Вот мой фрагмент диаграммы:

 public class chartsFragment extends Fragment { public View onCreateView() { //LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); return (inflater.inflate(R.layout.chartfragment, null)); } } 

Текущая ошибка, с которой я имею дело: «android.content.ActivityNotFoundException: для работы с Intent {}" не найдено никаких действий. Это прекрасно, я понимаю, что я мог бы использовать getActivity (). StartActivity (chartsFragment), но это приводит к той же ошибке. Я полагаю, что я ищу здесь, как мне запустить намерение из фрагмента, что приводит к открытию нового фрагмента?

Вы не можете открывать новые фрагменты. Фрагменты должны быть всегда размещены в виде активности. Если фрагмент находится в одном и том же действии (например, вкладки), тогда навигационная панель будет сложной. Я предполагаю, что вы хотите открыть новый экран с этим фрагментом.

Таким образом, вы просто создадите новую активность и разместите там новый фрагмент. Затем эта деятельность будет реагировать на намерение либо явно через класс активности, либо неявно через intent filter s.

Ответ на вашу проблему прост: замените текущий Fragment на новый Fragment и нажмите транзакцию на заднюю часть. Это сохраняет поведение кнопки …

Создание нового Activity действительно наносит ущерб всей цели использования фрагментов в любом случае … очень результативно.

 @Override public void onClick(View v) { // Create new fragment and transaction Fragment newFragment = new chartsFragment(); // consider using Java coding conventions (upper first char class names!!!) FragmentTransaction transaction = getFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction to the back stack transaction.replace(R.id.fragment_container, newFragment); transaction.addToBackStack(null); // Commit the transaction transaction.commit(); } 

http://developer.android.com/guide/components/fragments.html#Transactions

Попробуйте это, это может вам помочь:

 public void ButtonClick(View view) { Fragment mFragment = new YourNextFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mFragment).commit(); } 

Попробуйте это, это может вам помочь:

 private void changeFragment(Fragment targetFragment){ getSupportFragmentManager() .beginTransaction() .replace(R.id.main_fragment, targetFragment, "fragment") .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE) .commit(); } 
Intereting Posts
Различия между различными типами трансляций в android Проверка цифровой подписи на Android Ошибка Android Нет, minSdk (API 19)> deviceSdk (API 1) Конвертировать представление в растровое изображение на Android Разница между system.gc () и runtime.gc () Когда вы создаете релиз apk с помощью студии Android, я получаю сообщение об ошибке: «Keystore был изменен или пароль неверен» Могу ли я убить или закончить () действие в потоке, отличном от потока пользовательского интерфейса.? Android Studio – с Junit 4.12 "!!! Ожидается, что версия JUnit версии 3.8 или более поздней версии: Почему этот AlertDialog.Builder.setIcon не показывает значок ic_menu_info? Как написать выходы в Log in Android? Android: BackStack ошибочно работает, если приложение было запущено из другого приложения Пропустили 60 кадров! Приложение может слишком много работать над своей основной нитью Android oncreateview называется дважды Main не может быть разрешен или не является полем Продолжайте получать 404 для apple-touch-icon.png