Articles of android fragments

执行AsyncTask时替换碎片 – getActivity()上的NullPointerException

我最近将我的活动转换为碎片。 使用与Tab-Navigation类似的东西,当用户选择另一个选项卡时,将替换片段。 填充片段后,我启动至少一个AsyncTask以从Internet获取一些信息。 但是 – 如果用户切换到另一个选项卡,就像我的AsyncTask中的doBackground方法正在执行一样 – 片段被替换 ,因此我在标记的行中得到NullPointerException : @Override protected Object doInBackground(Object… params) { … String tempjson = helper.SendPost(getResources().getText(R.string.apiid)); //ERROR: Fragment not attached … } protected onPostExecute(Object result) { … getActivity().getContentResolver() //NULLPOINTEREXCEPTION getView().findViewById(R.id.button) //NULL … } getActivity()和getResources()会导致错误,因为我的Fragment已被替换。 我尝试过的事情: 在我的AsyncTask上调用cancel方法(如果在执行onPostExecute()替换片段,则不会修复第一个错误,也不会修复第二个错误) 检查getActivity()是否为null或调用this.isDetached() (不是真正的修复,我需要在调用getActivity()时检查它等等) 所以我的问题是:摆脱这些AsyncTask问题最好的是什么? 我没有使用活动的这些问题,因为它们没有在标签更改时被“杀死”/分离(导致更高的内存使用量 – 我之所以想切换到碎片)

关于Android进度对话框。 避免?

我正在阅读关于Android网站中的Dialogs的文章,我遇到了一个说“避免ProgressDialog”的部分。 这是链接: http : //developer.android.com/guide/topics/ui/dialogs.html 这是否意味着他们建议不要使用它? 当我的应用程序正在进行后台工作时,我真的需要一个显示进度的popup窗口。 这是否意味着我必须使用ProgressBar类构建自己的Progress Dialog? 如何构建它的方式? 任何帮助表示赞赏。

片段中EditText和软键盘的问题

我目前正在构建一个Android应用程序,使用户可以拍照并写下它的细节。 该应用程序使用Sherlock库。 我已经实现了一个SherlockFragment来显示图像和一些EditText和TextView,使用户能够键入图像的信息。 但是,当其中一个EditText处于焦点上时,所有字段都会向上推,popup软键盘。 这是我的布局: 根据我的理解,在一个活动中,必须在Android Manifest中放置这个 ,以便在调用软键盘时调整视图。 但是,我们如何为片段设置它?

共享元素转换与FragmentTransaction.replace()一起使用但不适用于FragmentTransaction.add()

当我使用Fragment’replace’时,新的共享元素转换工作,但我似乎无法使其工作片段’ 添加 ‘。 我在两种情况下使用相同的容器。 更多细节: 活动 – 布局 – > 在启动Activity时,我将Fragment1添加到屏幕上 getFragmentManager().beginTransaction().replace(R.id.container,new TransitionTestFragment1(), “TransitionTestFragment1”).commit(); 在Fragment1布局中的视图的单击事件 – >我将Fragment2添加到屏幕。 我在第一个Fragment的onCreateView中设置了监听器 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final TransitionSet transitionSet = new TransitionSet(); transitionSet.addTransition(new ChangeImageTransform()); transitionSet.addTransition(new ChangeBounds()); transitionSet.addTransition(new ChangeTransform()); transitionSet.setDuration(300); View v=inflater.inflate(R.layout.fragment1, null); final View image=v.findViewById(R.id.image); image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { […]

onActivityResult()未调用

onActivityResult()没有被调用。 以下是我的代码: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Check which request we’re responding to Log.e(“CALLED”, “OnActivity Result”); if (requestCode == TEAM_SELECTED_REQUEST_CODE) { // Make sure the request was successful if (resultCode == RESULT_OK) { try { mySelectedTeam = getIntent().getStringExtra(“teamName”); txtSelectTeamCreateMatch.setText(mySelectedTeam); } catch (Exception e) { e.printStackTrace(); } } } } […]

android隐藏特定片段中的工具栏

我有一个问题,我不知道如何解决。 你如何隐藏特定片段中的工具栏,我已经在互联网上搜索,我发现的是通信活动和片段将解决它。 但它根本不适用于我,这是我的代码: 主要活动: public class MainActivity extends ActionBarActivity implements like_frag.OnHideToolbar{ …. public void onHidingToolbar(int position){ Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); if(toolbar == null){ getSupportActionBar().hide(); }else{ getSupportActionBar().hide(); } } like_frag.java public class like_frag extends Fragment { OnHideToolbar mCallback; Toolbar toolbar; public interface OnHideToolbar { public void onHidingToolbar(int position); } public void onAttach(Activity activity){ try{ mCallback = […]

在FragmentManager上调用popBackStack时的customAnimation

在我的活动中,只需按一下按钮,我就会使用自定义animation将新片段替换为当前片段,就像在此示例中一样。 @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle presses on the action bar items switch (item.getItemId()) { case R.id.action_anomalie: Fragment contentFragment = getFragmentManager().findFragmentById(R.id.content); if(contentFragment instanceof AnomalieListFragment) { getFragmentManager().popBackStack(); return true; } else { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); anomalieFragment = new AnomalieListFragment(); ft.replace(R.id.content, anomalieFragment); ft.addToBackStack(null); ft.commit(); } … 但是, 弹回堆栈不会显示任何animation。 有没有办法像使用setCustomAnimations方法一样在FragmentTransaction中指定自定义animation?

使用片段共享转换时,返回转换无法正常工作

我有2个片段ListMovieFragment和ListMovieFragment 。 我在ListMovieFragment中有一个在MainActivity实现的接口。 我正在使用共享元素转换; 当我单击ListMovieFragment的图像视图时,在MainActivity调用onMovieSelected 。 从ListMovieFragment转换工作。 但是当我单击后退按钮时,从DetailMovieFragment转换到ListMovieFragment无法正常工作。 这是MainActivity。 我想我有一个不正确的组合来设置片段的转换。 public class MainActivity extends AppCompatActivity implements ListMovieFragment.MovieSelectedListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState == null) { ListMovieFragment listMovieFragment = new ListMovieFragment(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.activity_main, listMovieFragment, ListMovieFragment.TAG); fragmentTransaction.commit(); } } @Override public void onMovieSelected(int movieId) { DetailMovieFragment detailMovieFragment = (DetailMovieFragment)getSupportFragmentManager().findFragmentByTag(DetailMovieFragment.TAG); […]

从Fragment内部获取父ViewPager视图

我试图从片段内部访问父viewpager,但我不知道如何做到这一点。 我需要在片段内的onClick事件之后切换ViewPager上的currentItem。 有任何想法吗? 编辑: 我想访问父视图(ViewPager View),以便我可以从我的一个片段中更改可见的currentItem。

关闭onTouchOutside上的DialogFragment(不是Dialog)

我已经搜索了有关解除对话onTouchOutside的所有答案,但是,我在我的应用程序中使用DialogFragment 。 当用户在DialogFragment区域外单击时,如何解除DialogFragment 。 我已经检查了Dialog的setCanceledOnTouchOutside的源代码 public void setCanceledOnTouchOutside(boolean cancel) { if (cancel && !mCancelable) { mCancelable = true; } mCanceledOnTouchOutside = cancel; } 还有另一个可能有趣的function是isOutOfBounds private boolean isOutOfBounds(MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); final int slop = ViewConfiguration.get(mContext).getScaledWindowTouchSlop(); final View decorView = getWindow().getDecorView(); return (x < -slop) […]