xiaoyan_12 2013-04-16 08:56 采纳率: 25%
浏览 5672
已采纳

在 fragment 如何实例化接口?

android 程序中,在一个 fragment activity 中有一个 progressbar。当任何 fragment 调用接口时,这个 progress bar 就会设置为可见的。

public class MainScreen extends FragmentActivity {
        public interface OnConnectingToInternet {
        public void showProgressbar(boolean flag);
    }

    // rest of codes
    .
    .
    .
      // Implementing Interface
    public void showProgressbar(boolean flag) {
        if(flag){
            myProgressbar.showProgressBar();
        } else {
            myProgressbar.hideProgressBar();
        }
    }
}

每一个fragment应该连接网络获取数据,但是在这之前要调用接口。其中一个fragment的代码如下:

public class TopRecipesFragment extends Fragment {
    private OnConnectingToInternet onConnectingToInternet;
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        // onConnectingToInternet = (OnConnectingToInternet) activity;
        Log.i(TAG, "Fragment attached to activity.");
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        New MyAsyncTask.execute();
    }
    public class MyAsyncTask extends AsyncTask<Void, Void, Boolean> {       
        @Override
            protected void onPreExecute() {
            Log.i(TAG, "myAsyncTask is about to start...");
            onConnectingToInternet.showProgressbar(true);
            }
        @Override
            protected Boolean doInBackground(Void... params) {
            ...
            }

        @Override
            protected void onPostExecute(Boolean result) {
            Log.i(TAG, "myAsyncTask is about to start...");

            onConnectingToInternet.showProgressbar(false);
            }
}

问题是我不知道如何实例化这个接口。如果我不加入这行:onConnectingToInternet = (OnConnectingToInternet) activity; 然后运行程序时,就会出错NullPointerException

但是,如果我这样实例化,然后程序就崩溃。我用通常的做法也不行:onConnectingToInternet = new MainScreen();
如何解决这个问题呢?

  • 写回答

3条回答 默认 最新

  • dzb 2013-04-17 01:33
    关注

    直接让TopRecipesFragment实现OnConnectingToInternet这个接口

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog