如何获取嵌套类中的上下文?

xpo*_*ort 5 java android kotlin

因为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();
        }
    }   

}
Run Code Online (Sandbox Code Playgroud)

而不是以下内容。

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();
    }

}
Run Code Online (Sandbox Code Playgroud)

问题

如何获取第一种方法this的上下文?Toast.makeText我熟悉c#,但不熟悉java和android。

Ben*_* P. 5

如果ButtonHandler是一个非静态内部类(看起来是),您可以只使用MainActivity.this而不是this为了引用 a Context

Toast.makeText(MainActivity.this, s, LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)

如果ButtonHandler是静态的(所以MainActivity.this不起作用),您必须以某种方式将上下文对象传递给该方法。show()假设您从该方法调用onClick(),您可以利用View.getContext()并编写以下内容:

show(v.getContext(), s);
Run Code Online (Sandbox Code Playgroud)
private void show(Context c, String s)
{
    Toast.makeText(c, s, LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)