私のアプリには Gridview があります。マニフェストでダイアログとしてテーマ化されたアクティビティを開くために使用される Gridview セルをクリックします。これはうまくいきました。
アプリをさらに改良するために、ビューページャーをアクティビティに追加したいと考えました。だから私はに変更SomeClass extends Activity
しましたSomeClass extends Fragment
。extends FragmentActivity
これを保持するコンテナー ( which ) を作成し、Fragment
このコンテナーをマニフェストでダイアログとしてテーマにしました。
<activity android:name="com.packagename.SomeContainer" android:theme="@style/Theme.Sherlock.Light.Dialog" />
これはフラグメントをダイアログとして表示しません。私が望まないフラグメントのフルスクリーンを表示し、アクティビティのときに行ったコンテンツに基づいてサイズを変更しません。
コンテナ (fragmentactivity) またはフラグメントを、コンテンツに応じてサイズ変更し、全画面表示しないダイアログとして表示するにはどうすればよいですか?
SomeContainer.java
public class SomeContainer extends SherlockFragmentActivity {
private SomeAdapter mAdapter;
private ViewPager mPager;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
overridePendingTransition(R.anim.pull_in_from_left, R.anim.hold);
setContentView(R.layout.layout_events);
getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
Intent intent = getIntent();
String date_string = intent.getStringExtra("date_string");
mAdapter = new SomeAdapter(getSupportFragmentManager(), date_string);
mPager = (ViewPager) findViewById(R.id.eventspager);
mPager.setAdapter(mAdapter);
}
@Override
protected void onPause() {
overridePendingTransition(R.anim.hold, R.anim.pull_out_to_left);
super.onPause();
}
public static class SomeAdapter extends FragmentPagerAdapter {
String date;
FragmentManager fm;
public SomeAdapter(FragmentManager fm, String date) {
super(fm);
this.date = date;
this.fm = fm;
}
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return SomeFragment.newInstance(date);
case 1:
return SomeFragment1.newInstance(date);
case 2:
return SomeFragment2.newInstance(date);
default:
return null;
}
}
}
}
SomeFragment.java
public class SomeFragment extends DialogFragment {
String date_string;
public static SomeFragment newInstance(String date) {
SomeFragment someFragment = new SomeFragment();
Bundle args = new Bundle();
args.putString("date", date);
someFragment.setArguments(args);
returnsomeFragment;
}
/** Called when the activity is first created. */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.events, container, false);
//getActivity().getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
date_string = getArguments().getString("date");
//do something
return v;
}
}