标签: xamarin.android

如何在Mono中使用Runnable for android

我试着勒芒Monodroid!我尝试重写Java代码到C#并遇到一些问题:我不明白如何使用Runnable.这是Java中的代码,我不能转换为C#:

public class RunActivity extends Activity implements OnClickListener
{
   ...

   private Handler mHandler;

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.run);
       ... 
       mHandler = new Handler();
       mHandler.postDelayed(mUpdateGeneration, 1000);
   }

   private Runnable mUpdateGeneration = new Runnable()
   {
       public void run()
       {
          mAdapter.next();
          mLifeGrid.setAdapter(mAdapter);

          mHandler.postDelayed(mUpdateGeneration, 1000);
       }
   }; 
   ...
Run Code Online (Sandbox Code Playgroud)

你能解释一下我如何编写这段代码并使用Runnable吗?此Runnable用于更新gridview适配器并在后台从适配器加载数据到gridview.如果我在主线程中尝试更新适配器?像这样(C#代码):

mAdapter.next()
mLifeGrid.Adapter = mAdapter;
Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)

活动停滞不前.如果我不能使用Runnable,我怎样才能在新线程中实现适配器和gridview的更新?如果我使用C#线程,就像这样:

...
Thread th = new Thread(new ThreadStart(mUpdatGeneration));
th.Start();
}
public void mUpdateGeneration()
{
    mAdapter.next()
    mLifeGrid.Adapter = mAdapter;
    Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)

它会生成错误"System.NullReferenceException"

感谢所有人的帮助!PS抱歉我的英文:)

c# xamarin.android runnable

13
推荐指数
2
解决办法
1万
查看次数

Xamarin:Android:System.UnauthorizedAccessException:拒绝访问路径

所以我正在尝试创建一个文件,我得到System.UnauthorizedAccessException:拒绝访问路径"/ DownloadJitters".我不确定它是否是权限(我已经尝试过写入外部存储,但是没有用)或其他东西.此外,我正在试图找出一个写这些文件的好地方,因为我希望它们不容易找到.有任何想法吗?这是代码:

public void favouriteList(MainActivity av, Ordering o, string favouriteName, string totalCost, JittersListView jlv)
    {
        //Checks Directory exists
        if (File.Exists(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt") == false)
        {
            Directory.CreateDirectory(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/");
            File.Create(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt");
        }

        if (File.Exists(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/" + favouriteName + ".txt") == false)
        {
            var fav = File.Create(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/" + favouriteName + ".txt");
            fav.Close();
            string file = Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/" + favouriteName + ".txt";
            string added = null;
            int current = 0;
            while (true)
            {
                if (current < jlv.Count)
                { …
Run Code Online (Sandbox Code Playgroud)

c# android visual-studio xamarin.android xamarin

13
推荐指数
2
解决办法
1万
查看次数

我应该为现有的Android应用程序选择Xamarin native或Xamarin.Forms吗?

我们有一个Android应用程序,并希望为跨平台重新创建它.

Xamarin原生和形式的事实是什么?

本机的优点是,我们可以重用所有的xml布局,而我们必须在XAML或XIB中重新创建iOS视图?

什么是真正的阻挡者?

xamarin.ios xamarin.android xamarin xamarin.forms

13
推荐指数
2
解决办法
1736
查看次数

如何为具有许多依赖关系的AAR生成Xamarin绑定?

我正在尝试为Android com.adobe.creativesdk.image库生成Xamarin绑定

问题是这个库包含20个引用,这些引用肯定包含更多.我必须浏览整个树并提取所有引用以将它们添加到绑定项目中.

肯定必须有一个更简单的方法来做到这一点.有人告诉我,我可以使用Android Studio创建一个包含所有引用的包AAR,但我不确定要使其工作的步骤.一些参考文献也是AAR.

你能否请我通过正确的方法让这个绑定工作?

android xamarin.android xamarin

13
推荐指数
2
解决办法
1781
查看次数

用于Xamarin的GCM到FCM

Xamarin具有这是在解释GCM(谷歌云通讯)的预定义的支持https://developer.xamarin.com/guides/cross-platform/application_fundamentals/notifications/android/remote_notifications_in_android/

目前谷歌从GCM迁移到FCM(Firebase云消息传递)是否与Xamarin一起使用相同的指令,或者还有其他任何文档用于将FCM与Xamarin集成?

Firebase中提供的所有功能是否都可以在Xamarin App中使用?

xamarin.android firebase xamarin firebase-cloud-messaging firebase-notifications

13
推荐指数
1
解决办法
6697
查看次数

找不到与给定名称attr"colorPrimary"匹配的资源

我很难在Xamarin Studio中编译我的Android应用程序.出现的错误如下:

找不到与给定名称attr"colorPrimary"匹配的资源

哪个引用我的styles.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <!--item name="colorPrimaryDark">@color/colorPrimaryDark</item-->
        <!--item name="colorAccent">@color/colorAccent</item-->
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

在线发现的通常建议是将SDK版本设置为21或更高版本.但我已经尝试过了:

  • 在清单中将minSdkVersion设置为21
  • 在清单中将targetSdkVersion设置为21
  • 在项目设置中将taget框架设置为Android 5.0
  • 清理和重建项目

错误仍然存​​在:-(是否还需要其他设置才能使其工作?

android xamarin.android xamarin

13
推荐指数
2
解决办法
4万
查看次数

以Xamarin形式拖放

我们如何在Xamarin中添加拖放功能..

经过大量的谷歌搜索后,我找到了以下关于xamarin拖放的官方链接..

https://blog.xamarin.com/android-tricks-supporting-drag-and-drop-in-an-app/

但它只使用Android本机代码.

我的问题:

  1. 在Xamarin中,是否可以在没有本机代码的情况下实现拖放功能?

  2. 如果回答 - 否 - >我们如何实现所有平台的拖放监听?

我搜索谷歌和官方论坛,没有发现..有人帮助我..谢谢..

android cross-platform xamarin.android xamarin xamarin.forms

13
推荐指数
2
解决办法
5036
查看次数

如何在Xamarin中处理"$ {applicationid}"?

我正在尝试为Zendesk库创建绑定,但我遇到了一个问题.

Zendesk Belvedere库(belvedere-1.0.2.1.aar)在其清单文件中包含一个文件提供程序:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    ...

    <application>
        <provider
            android:name="com.zendesk.belvedere.BelvedereFileProvider"
            android:authorities="${applicationId}.belvedere.attachments"
            android:exported="false"
            android:grantUriPermissions="true" >
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/belvedere_attachment_storage" />
        </provider>
    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

当Gradle用作构建工具时,它会将其放在APK文件中,${applicationId}.belvedere.attachmentscom.your_package_name_here.belvedere.attachments在合并的清单文件中替换它.没关系.

但是,Xamarin以不同的方式处理它.这是我在最终APK的清单中找到的内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    ...
    ...

    <application 
        ...
        ...
        <provider 
            android:name="com.zendesk.belvedere.BelvedereFileProvider" 
            android:exported="false"
            android:authorities="dollar_openBracket_applicationId_closeBracket" 
            android:grantUriPermissions="true">
            <meta-data 
                android:name="android.support.FILE_PROVIDER_PATHS" 
                android:resource="@xml/belvedere_attachment_storage" />
        </provider>
        ...
        ...
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

显然,dollar_openBracket_applicationId_closeBracket不是我需要的.

似乎一切正常,但是不可能安装几个使用这些绑定的Xamarin应用程序,因为所有这些应用程序都会有相同权限的冲突提供程序(并且用户会收到INSTALL_FAILED_CONFLICTING_PROVIDER错误).

是否有办法改变dollar_openBracket_applicationId_closeBracket清单?

编辑:显示问题的小样本:https://gitlab.com/lassana/ZendeskXamarin/

android android-manifest xamarin.android xamarin

13
推荐指数
2
解决办法
3350
查看次数

如何修复 xamarin android 中的“不允许到 x 的明文 HTTP 流量”

我的应用程序存在问题,不允许到 x 的明文 HTTP 流量。

我已经尝试将 android:usesCleartextTraffic="true" 放入我的清单中。但我想将“android:usesCleartextTraffic”标志更改为“false”以防止发送未加密的流量。

怎么解决这个问题呢?

https http xamarin.android xamarin.forms cleartext

13
推荐指数
4
解决办法
2万
查看次数

同时在多个设备中运行Android应用程序(Xamarin)

就像在Android Studio中一样,我想知道是否有机会让Xamarin Studio同时在多个设备/模拟器中运行应用程序.

我已将此问题作为Xamarin bugzilla上的功能请求发布. https://bugzilla.xamarin.com/show_bug.cgi?id=39356

xamarin.android xamarin xamarin-studio

12
推荐指数
1
解决办法
1153
查看次数