我是 Android 开发新手,我想将按钮与动画链接起来。我在附近遇到错误runOnUiThread()
and 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 事件,但我不知道为什么会弹出此错误:
对于 new Thread(){} 类型,方法 runOnUiThread(new Runnable(){}) 未定义
runOnUIThread(...)
是一种方法Activity
.
因此,使用这个:
getActivity().runOnUIThread(...);
但是,要小心。你正在处理异步线程,所以你的Fragment
可能与其分离Activity
, 导致getActivity()
返回null
。您可能想要添加支票if(isAdded())
or if(getActivity() != null)
在执行之前。
或者,使用AsyncTask
,它自行处理在 ui 线程上运行的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)