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