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

San*_*p V 6 java xml android android-fragments

我是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;
}}
Run Code Online (Sandbox Code Playgroud)

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

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

并且接近getapplication()方法 getApplication()方法未定义为new new Runnable(){}

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

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

nha*_*man 9

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

因此,使用此:

getActivity().runOnUIThread(...);
Run Code Online (Sandbox Code Playgroud)

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

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