java如何在嵌套类中获取上下文?
因为show
只在嵌套类ButtonHandler
中需要,所以我想执行以下操作
public class MainActivity extends AppCompatActivity
{
private class ButtonHandler implements OnClickListener
{
@Override
public void onClick(View view)
{
// removed for simplicity
}
private void show(String s)
{
//Toast.makeText(this, s, LENGTH_LONG).show();
}
}
}
而不是下面的内容
public class MainActivity extends AppCompatActivity
{
private class ButtonHandler implements OnClickListener
{
@Override
public void onClick(View view)
{
// removed for simplicity
}
}
private void show(String s)
{
Toast.makeText(this, s, LENGTH_LONG).show();
}
}
问题:
在第一种方法中,如何获取Toast.makeText
的上下文this
?我熟悉c#,但不熟悉java和安卓
# 1 楼答案
外部类实例可以通过
MainActivity.this
访问。此外,还可以通过MainActivity.this.field
访问字段# 2 楼答案
如果
ButtonHandler
是一个非静态的内部类(看起来是这样),您可以使用MainActivity.this
而不是this
来引用Context
:如果
ButtonHandler
是静态的(因此MainActivity.this
不起作用),则必须以某种方式将上下文对象传递给该方法。假设您是从onClick()
方法调用show()
,您可以利用View.getContext()
编写以下代码: