Java,如何通过接口设置变量?

Java,如何通过接口设置变量?,java,android,interface,Java,Android,Interface,在我的项目中,我定义了如下界面: public interface SearchResultProgressListener { public void OnSearchCompleted(boolean value); } 我在类A(称为SearchResultsActivity)中实现了这一点: 我有一个类B(称为HotelAsyncTaskFragment),我想通过这个类将布尔值发送给类A public class HotelsAsyncTaskFragment extends

在我的项目中,我定义了如下界面:

public interface SearchResultProgressListener {
    public void OnSearchCompleted(boolean value);
}
我在类A(称为SearchResultsActivity)中实现了这一点:

我有一个类B(称为HotelAsyncTaskFragment),我想通过这个类将布尔值发送给类A

public class HotelsAsyncTaskFragment extends SherlockFragment {
    private SearchResultProgressListener srpListener;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        srpListener = (SearchResultProgressListener) new SearchResultsActivity();
    }

    class HotelsSearchTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {...}

        @Override
        protected Void doInBackground(Void... params) {...}

        @Override
        protected void onPostExecute(Void result) {
            if(!isComplete()) {
                HotelsAsyncTaskFragment.this.srpListener.OnSearchCompleted(false);
                } else { 
            HotelsAsyncTaskFragment.this.srpListener.OnSearchCompleted(true);
                }
    }
    }
}
正如你们所看到的,“timerStatus”在第四行被设置为“true”,但之后我不知道为什么它被设置为false


如有任何建议,将不胜感激。谢谢

您没有显示SearchResultsActivity()的代码,但它显然与MainActivity()不同。您看到的日志条目来自两个不同的活动,有两个独立的变量。

现在您已经更改了代码,现在看起来更清楚了

是否尝试调试onPostExecute()

如果您看到日志,它清楚地表明它多次设置为false,但仅设置为true一次。所以,调试onPostExecute()方法,主要是isComplete()函数

我希望问题就在那里

希望这能帮助你解决你的问题

谢谢


777先生

什么是
localResults
?@baraky,在calss A中,在switch()下面;@恩,我忘记清理了。你考虑一个布尔变量可以是真的或假的。“Eng,我改变了那个部分。谢谢,这是我愚蠢的错误,对不起。是我的A班,我改了密码。我使用SearchResultsActivity更改了MainActivity。是的,但您正在创建该活动的新实例-您可能有两个实例正在运行。您很棒;)我更改了私有布尔timerStatus=false;到私有静态布尔timerStatus=false;所以,问题解决了。是的,正如我在其他评论中所说的,我对你们证实的新物体表示怀疑。谢谢
public class HotelsAsyncTaskFragment extends SherlockFragment {
    private SearchResultProgressListener srpListener;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        srpListener = (SearchResultProgressListener) new SearchResultsActivity();
    }

    class HotelsSearchTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {...}

        @Override
        protected Void doInBackground(Void... params) {...}

        @Override
        protected void onPostExecute(Void result) {
            if(!isComplete()) {
                HotelsAsyncTaskFragment.this.srpListener.OnSearchCompleted(false);
                } else { 
            HotelsAsyncTaskFragment.this.srpListener.OnSearchCompleted(true);
                }
    }
    }
}
02-13 16:41:58.716: E/Hesam(469): Status1: false
02-13 16:42:13.566: E/Hesam(469): Status1: false
02-13 16:42:14.566: E/Hesam(469): Status1: false
02-13 16:42:14.611: E/Hesam(469): Status0: true
02-13 16:42:15.571: E/Hesam(469): Status1: false
02-13 16:42:16.601: E/Hesam(469): Status1: false
02-13 16:42:17.616: E/Hesam(469): Status1: false
02-13 16:42:18.616: E/Hesam(469): Status1: false
02-13 16:42:19.621: E/Hesam(469): Status1: false
02-13 16:42:20.626: E/Hesam(469): Status1: false
02-13 16:42:21.621: E/Hesam(469): Status1: false