繁体   English   中英

基本Java-一个内部(嵌套)类可以访问另一个吗?

[英]Basic Java - Can one inner (nested?) class access another?

这就是我认为的基本Java问题:

这是一个Android项目。 我有这个设置:

 public class MyFragmentActivity extends FragmentActivity implements
    ActionBar.TabListener {

     // lots of code edited out


    public static class RateFragment extends Fragment {

             // lots of code edited out

         class InsertTask extends AsyncTask<String, String, Void> {

               protected void onPostExecute(Void v) { {

                // I need to access ReviewTask here
                new ReviewTask().execute();

               } 

         }


    }

    public static class ReviewFragment extendsListFragment {

              class ReviewTask extends AsyncTask<String, String, Void> {

                  // code

              }


    }


}

我真的在问一个基本的Java问题。 我知道它不是Android中最好的方法。

如果您必须知道我在做什么:(如果令人困惑,则此信息的优先级较低,仅在某些情况下如此)我在RateFragment中按下按钮并将数据插入MySQL数据库时调用了InsertTask。 这就是我要在上面的代码中执行的操作:在InsertTask的最后,在另一个内部类中调用ReviewTask。 这将更新列表视图(在另一个选项卡中)。

可以从InsertTask到达ReviewTask吗?

我认为您无法做到。 我只是尝试了一下。 不过,您可以执行以下操作...在片段中包含一个方法,InsertTask的postExecute()方法将调用该方法。 在这种片段方法中,您可以创建一个新的ReviewTask并触发该任务。 这样,您的内部类就可以与您的父类对话,该父类充当两次调用之间的委托。

编辑:

public class MyFragment extends FragmentActivity {

        private void delegateMethod(Object result) {
            TaskB b = new TaskB();
            b.doanotherthing(result);
        }

        class TaskA {
            ...
            public void onPostExecute() {
                Object result = new Object();
                delegateMethod(result);
            }
        }

        class TaskB {
            public void doanotherthing(Object o) {
                ...
            }
        }
    }

如果您将RateFragment的声明更改为非静态,则可以调用

class InsertTask extends AsyncTask<String, String, Void> {

    protected void onPostExecute(Void v) { {

        MyFragmentActivity.this.(new RateFragment()).(new ReviewTask()).execute();

    } 

}

因为您的InsertTask仍在MyFragmentActivity实例中,所以关键字this仍然可用,您只需使用MyFragmentActivity.this告诉它哪个“ this ”。 请注意,这是类名,而不是实例名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM