2015-02-19 7 views
5

Используя Android Studio, у меня есть класс MainActiviy с фрагментом Placeholder. Этот фрагмент имеет кнопки, но нужно загрузить Activity. Как это сделать? Мне сказали попробовать что-то вроде ниже, но новый Intent не работает.Начать новую активность из фрагмента

Button button = (Button) rootView.findViewById(R.id.button1); 
button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(MainActivity.class, AnotherActivity.class); 
      startActivity(intent); 
     } 
}); 
+0

Пожалуйста, сообщите ваши текущие попытки/код. Это широкий вопрос, на который нужно ответить, прочитав официальную документацию по Android. http://developer.android.com/guide/components/fragments.html –

ответ

9

Если вы посмотрите на documentation вы можете увидеть, что, чтобы начать деятельность, вы хотите использовать следующий код

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

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

Ваш полный код выше, должен выглядеть следующим образом

Button button = (Button) rootView.findViewById(R.id.button1); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent intent = new Intent(getActivity(), AnotherActivity.class); 
     startActivity(intent); 
    } 
}); 
+0

Что делать, если я внутри фрагмента PlaceHolder внутри MainActivity? Можно ли это сделать там? Я пробовал так много вещей, не повезло. – Stephanie

+0

В этом случае замените 'this'' getActivity() ' –

+0

О, черт возьми, это работает !!!! Спасибо, – Stephanie

1
Button button = (Button) view.findViewById(R.id.button_ID); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent myintent = new Intent(getActivity(), CallingActivity.class); 
     startActivity(myintent); 
    } 
}); 
2

Вы должны использовать getActivity() для запуска Activity из Fragment.

От фрагмента:Context является родительской деятельностью (getActivity()).

Intent intent = new Intent(getActivity(), AnotherActivity.class); 
startActivity(intent); 
Смежные вопросы