java – Android:当我在片段附近使用它时,在runOnUiThread附近收到错误

前端之家收集整理的这篇文章主要介绍了java – Android:当我在片段附近使用它时,在runOnUiThread附近收到错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Android开发的新手,我想将一个按钮与动画相关联.我在runOnUiThread()和getApplication()附近收到错误.当我把它作为一个活动添加时它很好,但是当在MainFragment中声明时它会给出错误.但是,当我修复错误时,它会创建一个方法并返回false.
public class MainFragment extends Fragment {


@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.activity_main,container,false);
    ImageButton btnFacebook = (ImageButton)rootView.findViewById(R.id.facebook2);
    final Animation alpha = AnimationUtils.loadAnimation(getActivity(),R.anim.anim_alpha);

    btnFacebook.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View arg0) {
            arg0.startAnimation(alpha);

            Thread thread = new Thread()
            {
                @Override               
                public void run()
                {
                    try
                    {
                        Thread.sleep(1000);
                    }catch(InterruptedException e){                         
                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                          startActivity(new Intent(getApplication(),FacebookActivity.class)); 
                        }

                    });
                }
            };


            thread.start();
          }}); 
    return rootView;
}}

在XML文件中,我只有facebook图像按钮.当我点击它时,它必须触发动画,然后onclick事件必须发生,但我不知道为什么会出现这个错误

方法runOnUiThread(new Runnable(){})未定义类型new Thread(){}

并且靠近getapplication()方法
对于new Runnable(){}类型,未定义getApplication()方法

如果我创建了两个方法,则错误消失,但是当我点击按钮时它不会转到facebookActivity.java文件.

任何人都可以告诉/帮助我应该添加什么来解决这个问题.谢谢.

解决方法

runOnUIThread(…)是Activity的一种方法.

因此,使用此:

getActivity().runOnUIThread(...);

但是,要小心.您正在处理异步线程,因此您的Fragment可能与其Activity分离,导致getActivity()返回null.您可能希望在执行之前添加检查if(isAdded())或if(getActivity()!= null).

或者,使用AsyncTask,它自己处理在ui线程上运行的这个.

猜你在找的Android相关文章