我正在尝试检查在执行一大块代码之前是否在我的主活动类中设置了会话ID。我有一个SessionID类来存储id(如果有的话)。我试图通过使用以下内容在an onClick()
中访问它:
if ( ((SessionID) this.getApplication()).getSessionID() != null ) {}
但是,它会出现错误“无法解析方法'getApplication()'”
此行几乎可用于我的主要活动中的任何其他位置。我试着查看活动如何运作的细节,但我没有发现任何与此相关的内容。
问题:onClick()
有什么不同,我无法致电this.Application()
?
这是我正在使用的onClick()
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Calls downloadPDF to download PDF in background thread
if ( ((SessionID) this.getApplication()).getSessionID() != null) {
new downloadPDF().execute("http://10.0.2.2/DBConnector/public_html/mobilePDFNew.php");
}
答案 0 :(得分:3)
如果您使用的是onClickListener
,那么您将创建一个内部类的实例。 this
的范围在此更改,不再涉及您的活动/片段上下文。
假设您参加了某项活动,请改用MyActivity.this
。
答案 1 :(得分:1)
getApplication()
是Activity
类的方法。因此,如果您的Activity
:
view.setOnClickListener(new OnClickListener(){
public void onClick(View view){
if ( ((SessionID) this.getApplication()).getSessionID() != null ) {}
}
})
在这种情况下this
引用OnClickListener的一个实例。相反,您应该使用%ActivityName%.this.getApplication()