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文件.
任何人都可以告诉/帮助我应该添加什么来解决这个问题.谢谢.
runOnUIThread(...)是一种方法Activity.
因此,使用此:
getActivity().runOnUIThread(...);
Run Code Online (Sandbox Code Playgroud)
但是,要小心.您正在处理异步线程,因此Fragment可能会与其分离Activity,导致getActivity()返回null.您可能要添加检查if(isAdded())或if(getActivity() != null)在执行之前.
或者,使用a AsyncTask,它自己处理在ui线程上运行的这个.
| 归档时间: |
|
| 查看次数: |
8147 次 |
| 最近记录: |