Я не смог найти ответ на свою проблему, поэтому я создаю новый вопрос.
У меня есть приложение для Android с TabLayout (+ ViewPagerAdapter) в моей MainActivity, и каждая вкладка является фрагментом. Теперь я хочу начать новую активность с намерением из моего фрагмента. Однажды я хочу открыть действие при нажатии FAB, а в другой раз я хочу открыть другое действие при нажатии FeedItem из моей ленты новостей. Теперь каждый раз, когда я что-то нажимаю, открывается совершенно пустая страница.
Я делаю setContentView в обоих действиях onCreate() на правильном макете, и оба действия (+ макет) работают нормально сами по себе, когда я отображаю их непосредственно на вкладке.
Я помещу два действия, которые я хочу вызвать, и фрагмент, откуда я звоню, ниже, если вам нужно что-то еще, пожалуйста, дайте мне знать.
Я был бы очень рад, если бы кто-то мог мне помочь, мне это нужно для моего выпускного школьного проекта :)
NewsFragment (где моя лента новостей и FAB):
public class NewsFragment extends ListFragment
implements NumberPicker.OnValueChangeListener{
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup v = (ViewGroup)inflater.inflate(R.layout.fragment_news,container,false);
...
Context con = v.getContext();
//FAB
FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Click action
Intent intent = new Intent(con, OfferActivity.class);
getActivity().startActivity(intent);
}
});
}
//Here I watch the Newsfeed Click
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
FeedItem item = (FeedItem) adapter.getItem(position);
Intent intent = new Intent(getActivity(), BookActivity.class);
intent.putExtra("item", item);
intent.putExtra("rideid", rideidArray.get(position));
intent.putExtra("seats", seatsArray.get(position));
startActivity(intent);
}
}
Это действие, которое я вызываю FAB:
public class OfferActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.activity_offer);
...
}
И Activity, которое я вызываю, щелкнув элемент ListView:
public class DetailsActivity extends AppCompatActivity implements NumberPicker.OnValueChangeListener{
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.dialog_ride_details);
...
}
РЕДАКТИРОВАТЬ: Вот что я получаю в Android Monitor, когда нажимаю FAB. Я сделал этот вызов журнала:
Log.d("onClick: ", getActivity().toString()+ " "+OfferActivity.class.toString());
и получить это
D/onClick:: at.friendlyride.friendlyride.main.MainActivity@bc040c9 class at.friendlyride.friendlyride.main.OfferActivity
D/OpenGLRenderer: endAllStagingAnimators on 0x7f978af000 (RippleDrawable) with handle 0x7f98e11d40
А вот XML-файл MainActivity, где у меня есть TabLayout:
<android.support.design.widget.CoordinatorLayout 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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".MainActivity">
<!--<include-->
<!--android:id="@+id/tool_bar"-->
<!--layout="@layout/tool_bar"-->
<!--/>-->
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabIndicatorColor="@color/white"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />