1

I have created Portrait and Landscape Views with Fragments. I implement the TwoPane boolean code in my MainActivity.

  boolean mTwoPane;

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

        if (findViewById(R.id.details_fragment_container) != null) {

            mTwoPane = true;

            if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.details_fragment_container, new DetailsFragment(), DetailsFragment.LOG_TAG)
                        .commit();
            }
        } else {
            mTwoPane = false;
        }

    }

    @Override
    public void onItemSelected(String title, String poster, String plot, double ratings, String release, String id) {
        if (mTwoPane) {
           getSupportFragmentManager().beginTransaction()
                    .add(R.id.details_fragment_container, DetailsFragment.newInstance(title, poster, plot, ratings, release, id))
                    .commit();
            Log.d(LOG_TAG, "Movie Title: " +title);
        } else {
            getSupportFragmentManager().beginTransaction().replace(R.id.container,DetailsFragment.newInstance(title, poster, plot, ratings, release, id))
            .addToBackStack(null).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
        }
    }

How do I get the boolean for orientation in the BaseAdapter so I can manage the onClickListener to either open the details in the TwoPane or Open the Fragment. I want to put the mListener into boolean if else.

 view.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mListener.onItemSelected(MovieArrayList.get(i).getTitle(), Constants.IMAGE_URL + MovieArrayList.get(i).getImage(), 

MovieArrayList.get(i).getPlot(), MovieArrayList.get(i).getRating(), MovieArrayList.get(i).getRelease(), MovieArrayList.get(i).getId() );
            Bundle args = new Bundle();
            args.putString("title", MovieArrayList.get(i).getTitle());
            args.putString("poster",Constants.IMAGE_URL + MovieArrayList.get(i).getImage());
            args.putString("plot",MovieArrayList.get(i).getPlot());
            args.putDouble("rating",MovieArrayList.get(i).getRating());
            args.putString("release", MovieArrayList.get(i).getRelease());
            args.putString("id",MovieArrayList.get(i).getId());
            Fragment newFragment = new DetailsFragment();
            newFragment.setArguments(args);
            android.support.v4.app.FragmentTransaction transaction = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.container, newFragment);
            transaction.addToBackStack(null);
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            transaction.commit();
        }
    });
    return view;
}
Se7en
  • 21
  • 3

1 Answers1

0

Right now you have:

mTwoPane = findViewById(R.id.details_fragment_container) != null;

You could replace it with method:

boolean isLandscape(Context context) { return context.getResources().getBoolean(R.bool.isLandscape); }

mTwoPane = isLandscape(this);

You have to add boolean value as in: Check orientation on Android phone

After that in View.OnClickListener() you could execute:

boolean isLandscape = isLandscape(view.getContext());

Community
  • 1
  • 1
wdeb
  • 61
  • 1
  • 4