我是新來的android編程,我需要幫助:我需要攔截Fragment中的按鈕以顯示退出警報對話框。我試着用都和onBackPressed onkeydown事件,但他們不工作,我不知道爲什麼...... 這裏是一些代碼:如何攔截片段中的後退按鈕?
public class Home extends Fragment {
private Dialog dialog;
// onAttach : set activity listener
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// if implemented by activity, set listener
// else create local listener (code never executed in this example)
}
// onCreateView :
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
// fragment not when container null
if (container == null) {
return null;
}
// inflate view from layout
final View view = inflater.inflate(R.layout.home,container,false);
...
//onBackPressed(); doesn't work, alertDialog comes up only the first time without touching back button
return view;
}
我「onBackPressed」 ......
public void onBackPressed() {
new AlertDialog.Builder(getActivity())
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Hey!")
.setMessage("Exit?")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
FragmentActivity i=getActivity();
i.finish();
}
})
.setNegativeButton("No", null)
.show();
}
}
這裏還PagerTabsActivity和PagerAdapter,如果你需要... PagerTabsActivity:
public class PagerTabsActivity extends FragmentActivity {
private static int i=0;
private static View pagerStrip;
// list contains fragments to instantiate in the viewpager
List<Fragment> fragments = new Vector<Fragment>();
List<String> fragmentTitles = new Vector<String>();
// page adapter between fragment list and view pager
private PagerAdapter mPagerAdapter;
// view pager
private ViewPager mViewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// creating fragments and adding to list
fragments.add(Fragment.instantiate(this, Home.class.getName()));
fragmentTitles.add(Home.class.getSimpleName());
fragments.add(Fragment.instantiate(this, Second.class.getName()));
fragmentTitles.add(Second.class.getSimpleName());
fragments.add(Fragment.instantiate(this, Third.class.getName()));
fragmentTitles.add(Third.class.getSimpleName());
//
mViewPager = (ViewPager) findViewById(R.id.pager);
pagerStrip = findViewById(R.id.pagerTabStrip);
if (pagerStrip instanceof PagerTabStrip) {
PagerTabStrip pagerTabStrip = (PagerTabStrip) pagerStrip;
pagerTabStrip.setDrawFullUnderline(true);
pagerTabStrip.setTabIndicatorColorResource(android.R.color.white);
// pagerTabStrip.setTextColor(color.white);
} else if (pagerStrip instanceof PagerTitleStrip) {
PagerTitleStrip pagerTitleStrip = (PagerTitleStrip) pagerStrip;
pagerTitleStrip.setTextColor(getResources().getColor(android.R.color.white));
}
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);
mViewPager.setAdapter(this.mPagerAdapter);
mViewPager.setCurrentItem(0);
}
}
PagerAdapter:
public class PagerAdapter extends FragmentPagerAdapter {
// private String titles[] = new String[] { "Tab1", "Tab2", "Tab3" };
private List<String> fragmentTitles;
private List<Fragment> fragments;
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public CharSequence getPageTitle(int position) {
if (null == fragmentTitles || fragmentTitles.size() <= position) {
return " ";
}
String fragTitle = fragmentTitles.get(position);
if (null == fragTitle || fragTitle.trim().length() == 0) {
return "No Title";
}
// Log.v("TitleAdapter - getPageTitle=", fragmentTitles.get(position));
return fragmentTitles.get(position);
}
@Override
public Fragment getItem(int position) {
// Log.v("TitleAdapter - getItem=", String.valueOf(position));
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
}
任何幫助將不勝感激! :)
「顯示的退出警報的對話」 - 這是一個壞主意,只是因爲不管你的數據是試圖在這裏保存可能以其他方式丟失(例如,用戶按HOME)。請不要用這樣的對話中斷用戶。相反,如果您認爲尚未準備好應用到主數據存儲區,則可以將任何未完成的數據保存到臨時點,並在用戶返回到您的應用時告知用戶該臨時數據。 – CommonsWare 2013-05-12 12:43:23
非常感謝這個建議:)我會牢記它!順便說一句,我只用交互式模型做一個非常簡單的應用程序,所以現在我只想知道如何解決這個問題! – Kurtis92 2013-05-12 15:01:22