有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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和安卓


共 (2) 个答案

  1. # 1 楼答案

    外部类实例可以通过MainActivity.this访问。此外,还可以通过MainActivity.this.field访问字段

  2. # 2 楼答案

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

    Toast.makeText(MainActivity.this, s, LENGTH_LONG).show();
    

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

    show(v.getContext(), s);
    
    private void show(Context c, String s)
    {
        Toast.makeText(c, s, LENGTH_LONG).show();
    }