Подтвердить что ты не робот

Как начать работу из фрагмента?

У меня есть набор вкладок внутри FragmentActivity, каждый из которых имеет собственный фрагмент. Когда я попытался запустить новую активность из этого фрагмента с помощью onClickListener и используя метод startActivity(myIntent), моя сила приложения закрывается.

Оглядев какое-то время, я нашел ссылку или два на метод под названием startActivityFromFragment, но после поиска около часа или около того я не могу найти никаких объяснений или примеров того, как его использовать, или это это то, что я должен использовать.

Я предполагаю, что я спрашиваю, есть ли разница между запуском нового действия из активности и запуском нового действия из фрагмента, и если да, то что мне нужно реализовать?

4b9b3361

Ответ 1

Вы должны сделать это с помощью getActivity().startActivity(myIntent)

Ответ 2

Я сделал это, ниже кода работает для меня....

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.hello_world, container, false);

        Button newPage = (Button)v.findViewById(R.id.click);
        newPage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), HomeActivity.class);
                startActivity(intent);
            }
        });
        return v;
    }

и убедитесь, что ваша целевая деятельность должна быть зарегистрирована в файле Manifest.xml,

но в моем случае все вкладки не отображаются в HomeActivity, любое решение для этого?

Ответ 3

Я делаю это так, чтобы запустить SendFreeTextActivity из (пользовательского) фрагмента меню, который появляется в нескольких действиях:

В классе MenuFragment:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_menu, container, false);

    final Button sendFreeTextButton = (Button) view.findViewById(R.id.sendFreeTextButton);
    sendFreeTextButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Log.d(TAG, "sendFreeTextButton clicked");
            Intent intent = new Intent(getActivity(), SendFreeTextActivity.class);
            MenuFragment.this.startActivity(intent);
        }
    });
    ...

Ответ 4

Разница между запуском Activity from the Fragment и Activity - это то, как вы получаете контекст, потому что в обоих случаях он должен быть активным.

Из действия: Контекст - текущая деятельность (this)

Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);

Из фрагмента: Контекстом является родительская активность (getActivity()). Обратите внимание, что сам фрагмент может начать работу с помощью startActivity(), это необязательно делать из активности.

Intent intent = new Intent(getActivity(), NewActivity.class);
startActivity(intent);

Ответ 5

Используйте базовый контекст Activity, в котором находится ваш фрагмент, чтобы начать Intent.

Intent j = new Intent(fBaseCtx, NewactivityName.class);         
startActivity(j);

где fBaseCtx - BaseContext вашей текущей активности. Вы можете получить его как fBaseCtx = getBaseContext();