我对Android开发和Java超级陌生。这是基本设置:我有一个初始屏幕,带有AsyncTask
来检查服务器的可用性。在此线程之后,我在活动中进行了回调。这比进行工作更有意义,OnPostExecute()
因为我想在不同的活动中重用此任务。
但是,在我的回调中,我检查状态是否正常。如果是,它将启动下一个活动。但是从回调的上下文来看,我不知道如何获得我的Activity
引用,我需要将它作为Intent的参数。
这是我在Activity中OnCreate下的代码:
//Check server status
CheckServiceTask t = new CheckServiceTask(new OnTaskCompleted<ShaggyServiceStatus>() {
@Override
public void onTaskCompleted(ShaggyServiceStatus result) {
Log.i(TAG, "Callback. Result: " + result.getStatus());
ProgressBar pb = (ProgressBar) findViewById(R.id.splash_progress);
pb.setVisibility(View.INVISIBLE);
if (result.getStatusCode() == 999){
TextView t = (TextView) findViewById(R.id.splash_status_text);
t.setText(result.getStatus());
return;
}
Intent i = new Intent(getActivity(), LoginActivity.class);
startActivity(i);
finish();
}
});
t.execute();
失败的部分位于getActivity()
。该呼叫不可用。使用this
会引发错误(据我所知,这是在的情况下OnTaskCompleted
)。
为了完整起见,这是OnTaskCompleted的接口:
public interface OnTaskCompleted<T> {
public void onTaskCompleted(T result);
}
这是CheckServiceTask类:
public class CheckServiceTask extends AsyncTask<Void, Void, ShaggyServiceStatus>{
private static final String TAG = "coo";
public OnTaskCompleted<ShaggyServiceStatus> listener;
public CheckServiceTask (OnTaskCompleted<ShaggyServiceStatus> l){
this.listener = l;
}
@Override
protected ShaggyServiceStatus doInBackground(Void... params) {
try {
Log.i(TAG, "Connecting to server...");
//TODO: Make this a setting
final String url = "https://someplace.com/status";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
//restTemplate.postForObject("url", bodyObject, ShaggySer.class);
ShaggyServiceStatus sss = restTemplate.getForObject(url, ShaggyServiceStatus.class);
Log.d(TAG, "Got the status.");
return sss;
} catch (Exception e) {
//TODO: Exception handling
Log.e(TAG, e.getMessage(), e);
}
//If we're here, it's not okay.
ShaggyServiceStatus r = new ShaggyServiceStatus("Cannot connect to server", 999, "none");
return r;
}
@Override
protected void onPostExecute(ShaggyServiceStatus result) {
super.onPostExecute(result);
listener.onTaskCompleted(result);
}
}
用 CurrentClassName.this
Intent i = new Intent(CurrentClassName.this, LoginActivity.class);
getActivity()
:与片段一起使用
返回此片段当前与之关联的活动。
class.this
与this
嵌套类不同。
我的目标是从arraylist创建menuitem,然后向每个menuitem添加一个事件,该事件在ArrayList中搜索所选的menuitem,以便它可以转移到下一个场景。菜单项将位于菜单按钮内。 我遇到的问题是如何从菜单项中提取文本。我如何引用这些匿名菜单项的文本?
问题内容: 我正在尝试从PreferenceActivity启动新的活动。但是,它失败并显示为“无法找到显式活动类。您是否在AndroidManifest.xml中声明了该活动?” 好吧,是的,我宣布: AlarmSettings是我的PreferenceActivity。AlarmSettings通过以下方式调用FlashLightActivity: 这是FlashLightActivity:
在以下片段中: 有没有办法从内部匿名类引用匿名类的外部实例? 第二个错误是在解决方案上,我在这里找到了一个匿名内部类的外部类的关键字。这些问题似乎共享一些概念和问题空间,但性质不同。
下面是我的示例类,我希望通过在这行中使用反射来获取y和z字段(Field[]fields=forName.getDeclaredFields();)我得到了空数组。如果y和z不是类结构的一部分,那么它们属于哪一部分
匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下: 这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。 匿名类有两种实现方式: 继承一个类,重写其方法。 实现一个接口(可以是多个),实现其方法。 下面通过代码来说明。 程序的输出结果如下: 从输出结果可以看出,匿名内部类有
我以为我对自己正在做的事情有很好的把握,但每当我觉得我对某事有很好的把握时,我被证明是错的:) 当我不在匿名类中时,我可以简单地执行 有人能解释为什么我可以调用方法,但不能在intent参数中使用吗?