java - 将 Java 嵌套类转换为 Xamarin.Android

标签 java android xamarin.android

Android/Java 开发中的一个典型模式是有一个嵌套类从父类访问方法:

public class MainActivity extends FragmentActivity {

  // implementation

  public class SectionsPagerAdapter extends FragmentPagerAdapter {
    String someString = getString(R.string.thestring);
  }
}

所以在这种情况下,Context.getString() 将访问 MainActivity 上下文。
这将如何转换为 Xamarin.Android(Android 的 Mono)?
当尝试完全相同的模式时,我得到:

Error CS0038: Cannot access a nonstatic member of outer type Test.MainActivity' via nested type Test.MainActivity.SectionsPagerAdapter' (CS0038)

我当然可以传递一个 Context 对象,但这似乎很乏味。

最佳答案

根据 API design Xamarin.Android 文档:

Non-static nested classes, also called inner classes, are significantly different. They contain an implicit reference to an instance of their enclosing type and cannot contain static members (among other differences outside the scope of this overview).

因此,您应该将 MainActivity 的引用传递给 SectionsPagerAdapter。然后,您可以访问 MainActivity 的成员。

关于java - 将 Java 嵌套类转换为 Xamarin.Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304904/

相关文章:

android - 内部/SD 卡的 Environment.ExternalStorageDirectory

具有 multidex 的 Android 应用程序(Xamarin Forms) - 启动如此缓慢

java - 在调用它之前如何确保另一个线程的处理程序不为空?

java - pk使用 `pkexec` 打开 .jar 文件并使用桌面条目运行命令

android - 只有一个数字在 AndroidPlot 中不显示任何内容

android - Google Fit API 历史记录有限制吗?

android - 我们如何在按钮中显示进度图标

java - 这个 Oracle 特定查询的 HQL 等价物是什么?

java - 在 App Engine 数据存储中设置文本数据类型的编码

android - 在 android/Xamarin.Android 中单击通知时切换到运行 Activity