Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android开发者指南:不同地使用嵌套类/接口_Android - Fatal编程技术网

Android开发者指南:不同地使用嵌套类/接口

Android开发者指南:不同地使用嵌套类/接口,android,Android,我正在学习Android应用程序开发。我从阅读API指南开始(我以前有一些背景),当我来到布局部分时,我发现了以下内容: // Create a message handling object as an anonymous class. private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { public void onItemClick(AdapterView parent, View

我正在学习Android应用程序开发。我从阅读API指南开始(我以前有一些背景),当我来到布局部分时,我发现了以下内容:

// Create a message handling object as an anonymous class.
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {

public void onItemClick(AdapterView parent, View v, int position, long id) {
    // Do something in response to the click
    }
};

listView.setOnItemClickListener(mMessageClickedHandler);
其中:
1-listView是一个listView对象,它是AdapterView的子类
2-OnItemClickListenerAdapterView中的嵌套类(接口)

当我第一次读到它时,我注意到它没有将匿名类名写为:
AdapterView.OnItemClickListener…

我认为这可能是因为它假设代码在AdapterView类中,但是当我注意到最后一行
listView.setOnItemClickListener(mMessageClickedHandler)时我说这一定是在活动方法中,我最后得出结论,这一定是个错误

但当我到达Grid View guide()并在第4步中,它编写了以下代码段:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

GridView gridview = (GridView) findViewById(R.id.gridview);

gridview.setAdapter(new ImageAdapter(this));

gridview.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View v,
            int position, long id) {
        Toast.makeText(HelloGridView.this, "" + position,
                Toast.LENGTH_SHORT).show();
         }
     });
  }
其中,它具有与上一示例相同的条件,但在使用嵌套接口时,它使用包含该接口的类编写它:
CompoundButton.OnCheckedChangeListener()
,而不是上一示例中的:
OnCheckedChangeListener()

其条件与前一个相同,因为:

1-CompoundButtonAdapterView都包含嵌套界面。
2-ToggleButtonGridView分别是CompoundButtonAdapterView的子类。
3-它们都在同一范围内定义和使用,即在活动方法中

所以,我去搜索GridView的课程,看看是否有人有问题,我发现了以下问题:

他在上面的GridView课程中使用了相同的代码,这对他很有效
(在他进口了适当的包装后)


那么,为什么它们的使用方式不同呢?我在Java中遗漏了什么吗?或者我注意到了一些错误?

如果开发人员具有导入AdapterView.OnItemClickListener
,则new OnItemClickListener()
是完全有效的。那么这是否意味着开发人员应该编写
new AdapterView.OnItemClickListener()
如果导入AdapterView.OnItemClickListener不存在?正确。这就是在Java中引用嵌套类的方式。
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isChecked) {
        // The toggle is enabled
    } else {
        // The toggle is disabled
      }
   }
});