【问题标题】:Xamarin compiler conditional for Android greyed out适用于 Android 的 Xamarin 编译器条件灰显
【发布时间】:2016-04-17 00:53:01
【问题描述】:

我正在尝试在 Xamarin 上制作一个新应用,第一次使用它并遇到了问题。

我设置为:

  1. 跨平台
  2. 单一视图
  3. 目标平台 - iOS 和 Android
  4. 共享库

我遇到的问题是,在共享部分的Database 类中,没有读取编译器条件的 Android 部分。 无论我在那里输入什么都是灰色的,并且在我输入时我没有得到预测文本功能。 我正在按照在线教程进行操作,但找不到解决方案。

using System;
using System.IO;

#if __IOS__
using Foundation;
#endif

namespace NoteTaker2
{
    public class Database
    {
        public Database ()
        {
        }

        public static string documentsFolder () {
            string path;

            #if __IOS__
            path = NSFileManager.DefaultManager.GetUrls (NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User) [0].Path;
            #endif

            #if __ANDROID__
            path = Android.App.Application.Context.getExternalFilesDir(null).AbsolutePath; // This line greyed out
            #endif

            Directory.CreateDirectory(path);
            return path;
        }
    }
}

【问题讨论】:

    标签: android ios xamarin


    【解决方案1】:

    想通了。我必须在 iOS 和 Android 之间切换以检查并获取代码/方法助手功能。 在项目的左上角,选择并在两者之间切换。 在单个 iOS 或 Android 文件夹中不是这种情况,只是在共享文件夹中。

    【讨论】:

      【解决方案2】:

      如果代码显示为灰色,则表示该代码正在被编译器忽略并且不会添加到构建中。

      在这种情况下,可能发生的情况是您没有定义_IOS__ANDROID_ 常量。您可以在构建配置中定义这些常量(右键单击项目 -> 属性 -> 构建 -> 条件编译符号)或使用 #define 预处理器指令在源代码中定义它们。

      using System;
      using System.IO;
      
      #define __IOS__
      

      【讨论】:

      • this 在我看来,Xamarin 应该已经为我定义了这些。编辑:Nevermind,这只适用于非共享项目。 (这让我想知道目的是什么。或者我误解了)
      猜你喜欢
      • 2011-11-03
      • 2020-07-02
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多