本文的目的是介绍android–如何在片段中实现onBackPressed()&intents?的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于androidgetSup
本文的目的是介绍android – 如何在片段中实现onBackPressed()&intents?的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于android getSupportActionBar()在片段中返回null、Android L:ActionBar setHideOnContentScrollEnabled、Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?、Android onBackPressed / onUserLeaveHint的知识。
本文目录一览:- android – 如何在片段中实现onBackPressed()&intents?
- android getSupportActionBar()在片段中返回null
- Android L:ActionBar setHideOnContentScrollEnabled
- Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?
- Android onBackPressed / onUserLeaveHint
android – 如何在片段中实现onBackPressed()&intents?
我知道onBackpressed()是一个活动中的方法但是,我想在片段中使用这些功能,这样当按下后退按钮时,它会通过Intent重定向到另一个活动.这有什么解决方案吗?
public class News_Events_fragment extends Fragment {
ProgressDialog pd;
ListView lv1;
SharedPreferences sharedPreferences = null;
int NotiCount;
TextView txt_title, txt_msg, textView;
Context context;
Intent intent ;
ArrayList<SliderMsgTitleModel> CurrentOfficersPastList;
NewsActivityAdapter pastAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
context = (Context) getActivity();
View rootView = inflater.inflate(R.layout.activity_news, container, false);
new AsyncTask<Void, Void, ArrayList<SliderMsgTitleModel>>() {
protected void onPreExecute() {
pd = new ProgressDialog(getActivity());
pd.setCancelable(true);
pd.setTitle("UPOA");
pd.setMessage("Please wait,loading the data...");
pd.show();
}
@Override
protected ArrayList<SliderMsgTitleModel> doInBackground(
Void... params) {
System.out.println("In Background");
CurrentOfficersPastList = new ArrayList<SliderMsgTitleModel>();
// display view for selected nav drawer item
ParseQuery<ParSEObject> query = ParseQuery.getQuery("message");
query.whereEqualTo("featured_status", true);
// query.whereEqualTo("push_status", true);
query.orderByDescending("updatedAt");
query.selectKeys(Arrays.asList("title"));
query.selectKeys(Arrays.asList("message"));
try {
query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
List<ParSEObject> results = query.find();
for (int i = 0; i < results.size(); i++) {
ParSEObject object = results.get(i);
CurrentOfficersPastList.add(new SliderMsgTitleModel(
object.getString("title"), object
.getString("message")));
System.out.println("title is=="
+ object.getString("title") + "&& message is"
+ object.getString("message") + "size is"
+ CurrentOfficersPastList.size());
}
} catch (Exception e) {
e.getMessage();
}
pd.dismiss();
return CurrentOfficersPastList;
}
@SuppressWarnings("unchecked")
@Override
protected void onPostExecute(ArrayList<SliderMsgTitleModel> value) {
pd.dismiss();
/*Intent ent = new Intent(getActivity(), NewsActivity.class);
ent.putExtra("NEWSLIST", (ArrayList<SliderMsgTitleModel>) value);
startActivity(ent);
System.out.println("Value is" + value.size());*/
CurrentOfficersPastList = new ArrayList<SliderMsgTitleModel>();
CurrentOfficersPastList = value;
lv1 = (ListView) getActivity().findViewById(R.id.list_title);
pastAdapter = new NewsActivityAdapter(getActivity(), R.layout.activity_news_txt, CurrentOfficersPastList);
lv1.setAdapter(pastAdapter);
}
}.execute();
return rootView;
}
public void onBackpressed() {
// Todo Auto-generated method stub
//super.onBackpressed();
//Toast.makeText(getApplicationContext(), "click",2000).show();
String cameback="CameBack";
intent = new Intent(getActivity(),HomeActivity.class);
intent.putExtra("Comingback", cameback);
startActivity(intent);
}
}
解决方法:
覆盖onKeyDown而不是onBackpressed.不必要 .但这对我有用
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
String cameback="CameBack";
intent = new Intent(getActivity(),HomeActivity.class);
intent.putExtra("Comingback", cameback);
startActivity(intent);
return true
}
return false;
}
android getSupportActionBar()在片段中返回null
UPDATE
我没有提到将ToolBar与ActionBaractivity一起使用的任何内容.这就是我总是得到空指针异常的原因.对于那些面临同样问题please refere this answer的人
我有这个片段代码来更改片段时更改支持操作栏的外观.
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
mActionBar = ((ActionBaractivity)getActivity()).getSupportActionBar();
SpannableString s = new SpannableString("Dashboard");
s.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.app_blue_text)), 0, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
s.setSpan(new TypefaceSpan(getActivity(), "Optima-Regular.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
if( null!= mActionBar){
mActionBar.setElevation(0);
mActionBar.setTitle(s);
}
}
我已经提到了有关如何解决此错误的先前/类似问题.这些解决方案建议在onActivityCreated()方法中更改操作栏外观.我也试过onAttach().似乎没有工作.我使用了支持操作栏来保持向后兼容性.活动也相应地转换为ActionBaractivity.
完整的代码非常冗长,所以我跳过了它.如果需要,我可以发布完整的代码并更新问题以及更多细节.
错误日志
Caused by: java.lang.NullPointerException
at com.example.testapp.fragments.NavigationDrawerFragment.onActivityCreated(NavigationDrawerFragment.java:215)
第215行是:mActionBar.setElevation(0);
解决方法:
我错过了在这个问题中提及的更多信息.这就是其他优秀的SO用户无法正确回答的原因.所以我在这里自己回答.
我用ToolBar代替了常规的ActionBar.使用ToolBar时,必须将其设置为ActionBar.所以做 –
toolbar = (Toolbar) getActivity().findViewById(toolbarId);
((ActionBaractivity)getActivity()).setSupportActionBar(toolbar);
之后我可以轻松改变标题和外观 –
((ActionBaractivity)getActivity()).getSupportActionBar().setTitle(s);
只需记住在实际使用片段中的操作栏之前将工具栏设置为操作栏.
Android L:ActionBar setHideOnContentScrollEnabled
我的Activity的布局是一个ScrollView,TextView显示大量文本,因此有def滚动.我还根据文档的要求添加了FEATURE_ACTION_BAR_OVERLAY
getwindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); setContentView(R.layout.main_activity); getActionBar().setHideOnContentScrollEnabled(true); getActionBar().setHideOffset(40);
解决方法
If enabled,the action bar will scroll out of sight along with a
nested scrolling child view’s content.
View.setnestedScrollingEnabled(布尔)
Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?
As I read,为了改变“后退”按钮的行为,我需要覆盖Java活动类的onBackpressed()方法.但是我不使用Java,我可以从C/C++到达这个方法来覆盖它吗?
如果没有,是否有其他方法使用NDK处理“后退”按钮,没有Java代码?
解决方法
int32_t app_handle_event(struct android_apP* app,AInputEvent* event) { if (AKeyEvent_getKeyCode(event) == AKEYCODE_BACK) { // actions on back key return 1; // <-- prevent default handler }; // ... return 0; }
Android onBackPressed / onUserLeaveHint
如果有人知道如何解决这个问题或更好的处理这两个事件的方式,那将非常感激.
谢谢.
解决方法
>当用户点击主页键时
>当用户按下键时
>当用户点击信号器栏时
基本上它暗示用户试图离开你的活动.这意味着如果您正在处理onUserLeaveHint(),则不需要在代码中处理onBackpressed().
我们今天的关于android – 如何在片段中实现onBackPressed()&intents?的分享就到这里,谢谢您的阅读,如果想了解更多关于android getSupportActionBar()在片段中返回null、Android L:ActionBar setHideOnContentScrollEnabled、Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?、Android onBackPressed / onUserLeaveHint的相关信息,可以在本站进行搜索。
本文标签: