xamarin.android中的c#代码未执行

xamarin.android中的c#代码未执行,c#,xamarin.android,C#,Xamarin.android,我写了这段代码,是为了创建一个pdf文件,允许里面有阿拉伯语单词。结果是代码执行没有返回任何结果。我是说什么都没发生。没有出现toast,没有创建pdf,但仍然没有错误,没有异常,什么都没有。 代码如下: Button btn = FindViewById<Button>(Resource.Id.button1); btn.Click += delegate { btn.Text = "

我写了这段代码,是为了创建一个pdf文件,允许里面有阿拉伯语单词。结果是代码执行没有返回任何结果。我是说什么都没发生。没有出现toast,没有创建pdf,但仍然没有错误,没有异常,什么都没有。 代码如下:

    Button btn = FindViewById<Button>(Resource.Id.button1);
            btn.Click += delegate 
            {
                btn.Text = "okay";
                 Toast.MakeText(this, "start", ToastLength.Long);
            var path2 = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
            filePath = System.IO.Path.Combine(path2.ToString(), "myfile4.pdf");
            stream = new FileStream(filePath, FileMode.Create);
            PdfWriter writer = new PdfWriter(stream);
            PdfDocument pdf2 = new iText.Kernel.Pdf.PdfDocument(writer);
            Document document2 = new Document(pdf2, PageSize.A4);
            AssetManager assets = this.Assets;
            string content;
            Stream stream2 = assets.Open("ARIAL.TTF");
            var memorystrm = new MemoryStream();
            stream2.CopyTo(memorystrm);
            byte[] t = memorystrm.ToArray();
            Toast.MakeText(this, t.Length.ToString(), ToastLength.Long);
            if (t != null)
            {
                PdfFont russian = PdfFontFactory.CreateFont(t, "UTF-8", true);
                document2.SetFont(russian);
                Paragraph p = new Paragraph("Hello World! ")
                    .Add(new Text("صباح! ").SetFontSize(14)).Add(new Text("Bonjour le monde! ").SetFontSize(10));
                document2.Add(p);
                document2.Close();
                Toast.MakeText(this, "done", ToastLength.Long);
            }
            else
            {
                Toast.MakeText(this, "error", ToastLength.Long);
            }


            };
Button btn=findviewbyd(Resource.Id.button1);
点击+=委托
{
btn.Text=“好”;
Toast.MakeText(这个“开始”,ToastLength.Long);
var path2=global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
filePath=System.IO.Path.Combine(path2.ToString(),“myfile4.pdf”);
stream=新文件流(filePath,FileMode.Create);
PdfWriter writer=新的PdfWriter(流);
PdfDocument pdf2=new iText.Kernel.Pdf.PdfDocument(writer);
文档2=新文档(pdf2,PageSize.A4);
AssetManager资产=此.assets;
字符串内容;
stream2=assets.Open(“ARIAL.TTF”);
var memorystrm=新的MemoryStream();
流2.复制到(memorystrm);
字节[]t=memorystrm.ToArray();
Toast.MakeText(this,t.Length.ToString(),ToastLength.Long);
如果(t!=null)
{
PdfFont俄语=PdfFontFactory.CreateFont(t,“UTF-8”,true);
文件2.SetFont(俄语);
段落p=新段落(“你好,世界!”)
.Add(新文本(“باح!”).SetFontSize(14)).Add(新文本(“世界你好!”).SetFontSize(10));
文件2.增加(p);
文档2.Close();
Toast.MakeText(这个“完成”,ToastLength.Long);
}
其他的
{
Toast.MakeText(这个“错误”,ToastLength.Long);
}
};
我添加了
btn.Text=“好”
检查它是否工作。确实如此,但之后的代码没有执行。为什么呢? 提前感谢。

首先

我是说什么都没发生。没有祝酒词出现

您忘记调用Show()方法

第二次,您忘记请求运行时权限了吗

我使用下面这样一个简单的示例进行测试,效果很好:

button.Click += Click_Event;

private void Click_Event(object sender, EventArgs e)
    {
        if (CheckSelfPermission(Manifest.Permission.WriteExternalStorage) == Android.Content.PM.Permission.Granted)
        {
            button.Text = "okay";
            Toast.MakeText(this, "start", ToastLength.Long);
            var path2 = global::Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);// my pdf file is in the Downloads folder.
            string filePath = System.IO.Path.Combine(path2.ToString(), "pdf.pdf");
            FileStream stream = new FileStream(filePath, FileMode.Create);
            PdfWriter writer = new PdfWriter(stream);
            PdfDocument pdf2 = new iText.Kernel.Pdf.PdfDocument(writer);
            Document document2 = new Document(pdf2, PageSize.A4);
            AssetManager assets = this.Assets;
            string content;
            Stream stream2 = assets.Open("arial.ttf");
            var memorystrm = new MemoryStream();
            stream2.CopyTo(memorystrm);
            byte[] t = memorystrm.ToArray();
            Toast.MakeText(this, t.Length.ToString(), ToastLength.Long);
            if (t != null)
            {
                PdfFont russian = PdfFontFactory.CreateFont(t, "UTF-8", true);
                document2.SetFont(russian);
                Paragraph p = new Paragraph("Hello World! ")
                    .Add(new Text("صباح! ").SetFontSize(14)).Add(new Text("Bonjour le monde! ").SetFontSize(10));
                document2.Add(p);
                document2.Close();
                Toast.MakeText(this, "done", ToastLength.Long).Show();
            }
            else
            {
                Toast.MakeText(this, "error", ToastLength.Long).Show();
            }
        }
        else
        {
            RequestPermissions(new string[] { Manifest.Permission.WriteExternalStorage }, 0);
        }
    }
效果如下:


哦,我的天哪!我怎么忘记了.Show()。我把所有的注意力都集中在pdf字体上,看不出是什么问题。但一个问题是,阿拉伯语单词没有出现,是不是Arial字体不支持阿拉伯语字母?
button.Click += Click_Event;

private void Click_Event(object sender, EventArgs e)
    {
        if (CheckSelfPermission(Manifest.Permission.WriteExternalStorage) == Android.Content.PM.Permission.Granted)
        {
            button.Text = "okay";
            Toast.MakeText(this, "start", ToastLength.Long);
            var path2 = global::Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);// my pdf file is in the Downloads folder.
            string filePath = System.IO.Path.Combine(path2.ToString(), "pdf.pdf");
            FileStream stream = new FileStream(filePath, FileMode.Create);
            PdfWriter writer = new PdfWriter(stream);
            PdfDocument pdf2 = new iText.Kernel.Pdf.PdfDocument(writer);
            Document document2 = new Document(pdf2, PageSize.A4);
            AssetManager assets = this.Assets;
            string content;
            Stream stream2 = assets.Open("arial.ttf");
            var memorystrm = new MemoryStream();
            stream2.CopyTo(memorystrm);
            byte[] t = memorystrm.ToArray();
            Toast.MakeText(this, t.Length.ToString(), ToastLength.Long);
            if (t != null)
            {
                PdfFont russian = PdfFontFactory.CreateFont(t, "UTF-8", true);
                document2.SetFont(russian);
                Paragraph p = new Paragraph("Hello World! ")
                    .Add(new Text("صباح! ").SetFontSize(14)).Add(new Text("Bonjour le monde! ").SetFontSize(10));
                document2.Add(p);
                document2.Close();
                Toast.MakeText(this, "done", ToastLength.Long).Show();
            }
            else
            {
                Toast.MakeText(this, "error", ToastLength.Long).Show();
            }
        }
        else
        {
            RequestPermissions(new string[] { Manifest.Permission.WriteExternalStorage }, 0);
        }
    }