2016-09-28 53 views
1

我已经使用片段创建了纵向和横向视图。我在我的MainActivity中实现了TwoPane布尔代码。如何在BaseAdapter类中为TwoPane布局返回布尔值

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(); 
     } 
    } 

如何获得定位中的布尔BaseAdapter这样我就可以管理onClickListener要么开在TwoPane细节或打开片段。 我想把mListener转换为布尔值,否则。

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; 
} 

回答

0

现在您有:

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

您可以用方法取代它:

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

mTwoPane = isLandscape(this);

您必须添加布尔值在:Check orientation on Android phone

后,在View.OnClickListener()你可以执行:

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