2

For 3 days I suffer ... I have created a separate tabs and recyclerView separately, are now unified the. Launch does not start "Unfortunately" !!! What could be the problem?

MainActivity:

public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

private int[] tabIcons = {
        R.drawable.ic_action_person,
        R.drawable.ic_action_group,
        R.drawable.ic_action_call
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    ActionBar actionBar = getSupportActionBar();

    actionBar.setDisplayHomeAsUpEnabled(true);


    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tablayout);
    tabLayout.setupWithViewPager(viewPager);

}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new TabOneFragment(), "One");
    adapter.addFragment(new TabTwoFragment(), "Two");
    adapter.addFragment(new TabThreeFragment(), "Three");
    viewPager.setAdapter(adapter);

}
}

TabOneFragment:

public class TabOneFragment extends Fragment {

private RecyclerView recyclerview;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view =  inflater.inflate(R.layout.tab_one_fragment, container, false);

    recyclerview = (RecyclerView)view.findViewById(R.id.recyclerview);
    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
    recyclerview.setLayoutManager(layoutManager);

    return view;
}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    ArrayList<TicketObjects> items = new ArrayList<>();

    RVAdapter adapter = new RVAdapter(items);
    recyclerview.setAdapter(adapter);

}

}

RVAdapter:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.ItemViewHolder> {

private List<TicketObjects> mItems;


public RVAdapter(List<TicketObjects> mItems) {
    this.mItems = mItems;

}

public class ItemViewHolder extends RecyclerView.ViewHolder {

    TextView departCode;
    TextView departTime;
    TextView departDate;
    TextView arriveCode;
    TextView arriveTime;
    TextView arriveDate;
    TextView flyTime;
    Button ticketPrice;
    ImageView airlineLogo;

    public ItemViewHolder(View itemView) {
        super(itemView);

        departCode = (TextView) itemView.findViewById(R.id.tvAirCodeDepart);
        departTime = (TextView) itemView.findViewById(R.id.tvDepartTime);
        departDate = (TextView) itemView.findViewById(R.id.tvDepartDate);
        arriveCode = (TextView) itemView.findViewById(R.id.tvCodeArrive);
        arriveTime = (TextView) itemView.findViewById(R.id.tvArriveTime);
        arriveDate = (TextView) itemView.findViewById(R.id.tvArriveDate);
        flyTime = (TextView) itemView.findViewById(R.id.tvTime);
        ticketPrice = (Button) itemView.findViewById(R.id.btnTickPrice);
        airlineLogo = (ImageView) itemView.findViewById(R.id.ivAirlineLogo);
    }
}

@Override
public void onBindViewHolder(ItemViewHolder itemViewHolder, int i) {

    itemViewHolder.departCode.setText(mItems.get(i).getDepartCode());
    itemViewHolder.departTime.setText(mItems.get(i).getDepartTime());
    itemViewHolder.departDate.setText(mItems.get(i).getDepartDate());
    itemViewHolder.arriveCode.setText(mItems.get(i).getArriveCode());
    itemViewHolder.arriveTime.setText(mItems.get(i).getArriveTime());
    itemViewHolder.arriveDate.setText(mItems.get(i).getArriveDate());
    itemViewHolder.flyTime.setText(mItems.get(i).getFlyTime());
    itemViewHolder.ticketPrice.setText(mItems.get(i).getTicketPrice());
    itemViewHolder.airlineLogo.setImageResource(mItems.get(i).getAirlineLogo());
}

@Override
public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, viewGroup, false);
    return new ItemViewHolder(view);
}

@Override
public int getItemCount() {
    return mItems.size();
}
}

TicketsObjects

public class TicketObjects {

private String departCode;
private String departTime;
private String departDate;
private String arriveCode;
private String arriveTime;
private String arriveDate;
private String flyTime;
private String ticketPrice;
private int airlineLogo;

public TicketObjects(String departCode, String departTime, String departDate,
                     String arriveCode, String arriveTime, String arriveDate,
                     String flyTime, String ticketPrice, int airlineLogo) {


    this.departCode = departCode;
    this.departTime = departTime;
    this.departDate = departDate;
    this.arriveCode = arriveCode;
    this.arriveTime = arriveTime;
    this.arriveDate = arriveDate;
    this.flyTime = flyTime;
    this.ticketPrice = ticketPrice;
    this.airlineLogo = airlineLogo;
}

public String getDepartCode(){
    return departCode;
}


public void setDepartCode(String departCode){
    this.departCode = departCode;
}

public String getDepartTime(){
    return departTime;
}

public void setDepartTime(String departTime){
    this.departTime = departTime;
}

public String getDepartDate(){
    return departDate;
}

public void setDepartDate(String departDate){
    this.departDate = departDate;
}

public String getArriveCode(){
    return arriveCode;
}

public void setArriveCode(String arriveCode){
    this.arriveCode = arriveCode;
}

public String getArriveTime(){
    return arriveTime;
}

public void setArriveTime(String arriveTime){
    this.arriveTime = arriveTime;
}

public String getArriveDate(){
    return arriveDate;
}

public void setArriveDate(String arriveDate){
    this.arriveDate = arriveDate;
}

public String getFlyTime(){
    return flyTime;
}

public void setFlyTime(String flyTime){
    this.flyTime = flyTime;
}

public String getTicketPrice(){
    return ticketPrice;
}

public void setTicketPrice(String ticketPrice){
    this.ticketPrice = ticketPrice;
}

public int getAirlineLogo(){
    return airlineLogo;
}

public void setAirlineLogo(int airlineLogo){
    this.airlineLogo = airlineLogo;
}

}

Error:

recyclerview.MainActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
                                                   at android.app.ActivityThread.access$600(ActivityThread.java:130)
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
                                                   at android.os.Handler.dispatchMessage(Handler.java:99)
                                                   at android.os.Looper.loop(Looper.java:137)
                                                   at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:511)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                   at dalvik.system.NativeStart.main(Native Method)
                                                Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }
                                                   at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:421)
                                                   at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:278)
                                                   at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:252)
                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
                                                   at com.tutorialsbuzz.recyclerview.MainActivity.onCreate(MainActivity.java:30)
                                                   at android.app.Activity.performCreate(Activity.java:5008)
                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                   at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                   at android.os.Looper.loop(Looper.java:137) 
                                                   at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                   at java.lang.reflect.Method.invokeNative(Native Method) 
                                                   at java.lang.reflect.Method.invoke(Method.java:511) 
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                   at dalvik.system.NativeStart.main(Native Method) 

Theme:

    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/actionBarColor</item>
    <item name="colorPrimaryDark">@color/titleBarColor</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>

</style>
DevOma
  • 299
  • 1
  • 4
  • 17
  • 1
    can you edit the question with what you see in `logcat` , will be more helpful that way – OBX Feb 19 '16 at 08:09
  • 2
    From the error message it seems that the issue is in your theme. Can you post it? – MidasLefko Feb 19 '16 at 08:16
  • So what happens if you remove from your theme the last item? `false` – pleft Feb 19 '16 at 08:29
  • It's seems same with your question. [Link](http://stackoverflow.com/questions/29790070/upgraded-to-appcompat-v22-1-0-and-now-getting-illegalargumentexception-appcompa) – Dennis Lu Feb 19 '16 at 09:53

2 Answers2

0

I think your style is the problem you should do like this

<style name="AppTheme" parent="AppTheme.Base">

</style>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="android:windowNoTitle">true</item>
    <item name="colorPrimary">@color/actionBarColor</item>
    <item name="colorPrimaryDark">@color/titleBarColor</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
</style>

Hope this help you.

Lester L.
  • 959
  • 1
  • 9
  • 18
0

For not displaying RecyclerView you can do like this

public class TabOneFragment extends Fragment {

private RecyclerView recyclerview;
private ArrayList<TicketObjects> items;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    items = new ArrayList<>();

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
    return inflater.inflate(R.layout.tab_one_fragment, container, false);
    }

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

        recyclerview = (RecyclerView) view.findViewById(R.id.recyclerview);
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        recyclerview.setLayoutManager(layoutManager);
        RVAdapter adapter = new RVAdapter(items);
        recyclerview.setAdapter(adapter);

}

}

Hope this helps.

Lester L.
  • 959
  • 1
  • 9
  • 18