MonoDroid - Beginner
本文关键字:Beginner MonoDroid | 更新日期: 2023-09-27 18:00:46
我正在使用Visual Studio 2010和Mono Droid v1.0.1开始用C#为Android平台编程。
我有个问题。从主"活动"想要调用另一个活动("pueba"),它做得很好,但我没有在屏幕上显示任何内容。也就是说,给我看一个标题为"prueba"的新屏幕,但没有显示任何内容(全是黑色)。
这是我正在使用的代码:
-
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="MonoAndroidApplication1.MonoAndroidApplication1.apk" android:versionCode="1" android:versionName="Primera"> <application android:label="MonoAndroidApplication1"> </application> <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <activity android:name=".Prueba" /> </manifest>
-
活动1.cs
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using System.IO; namespace MonoAndroidApplication1 { [Activity(Label = "MonoAndroidApplication1", MainLauncher = true, Icon = "@drawable/icon")] public class Activity1 : Activity { EditText et01; EditText et02; EditText et03; Button bt01; Button bt02; Button bt03; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); et01 = (EditText)FindViewById(Resource.Id.edittext01); et02 = (EditText)FindViewById(Resource.Id.edittext02); et03 = (EditText)FindViewById(Resource.Id.edittext03); bt01 = (Button)FindViewById(Resource.Id.button01); bt02 = (Button)FindViewById(Resource.Id.button02); bt03 = (Button)FindViewById(Resource.Id.button03); bt01.Click += (sender, e) => { et01.Text = string.Format("Click en 1"); }; bt02.Click += (sender, e) => { et02.Text = string.Format("Click en 2"); }; bt03.Click += (sender, e) => { et03.Text = string.Format("Click en 3"); Intent i = new Intent(this, typeof(Prueba)); StartActivity(i); }; Toast.MakeText(this, "Esto es un ejemplo", ToastLength.Short).Show(); } } }
-
Prueb.cs
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using System.IO; namespace MonoAndroidApplication1 { [Activity(Label = "Prueba", MainLauncher = true, Icon = "@drawable/icon")] public class Prueba : Activity { public void onCreate(Bundle savedInstanceState) { SetContentView(Resource.Layout.Prueba); } } }
-
Prueba.axml
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/textoif" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="IF-Software" > </TextView>
-
Main.axml
<?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/widget27" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" > <TableRow android:id="@+id/widget28" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" > <TextView android:id="@+id/widget32" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Prueba IF" > </TextView> </TableRow> <TableRow android:id="@+id/widget29" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" > <EditText android:id="@+id/edittext01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" > </EditText> <Button android:id="@+id/button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" > </Button> </TableRow> <TableRow android:id="@+id/widget30" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" > <EditText android:id="@+id/edittext02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" > </EditText> <Button android:id="@+id/button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2" > </Button> </TableRow> <TableRow android:id="@+id/widget31" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" > <EditText android:id="@+id/edittext03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" > </EditText> <Button android:id="@+id/button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3" > </Button> </TableRow> </TableLayout>
不是MonoDroid开发人员,但我注意到您在第二个活动onCreate中缺少了"override"关键字,也没有调用父级。
我想你会想从Prueb.cs中删除MainLauncher=true。这用于指示应用程序启动时应该启动什么活动。
http://docs.mono-android.net/index.aspx?link=P%3aAndroid.App.ActivityAttribute.MainLauncher
添加大多数(如果不是全部,也不确定)"清单选项"的Mono式方法是通过实现活动(或服务)的类的属性。
Visual Studio Mono插件会自动生成清单,因此最好不要手动篡改它(我相信在某些情况下没有其他选择)。
例如:
[Activity(Label="MonoDroid App", MainLauncher=true, Permission="android.permission.WRITE_EXTERNAL_STORAGE")]
public class MonoActivity : Activity
{
protected override void OnCreate(Bundle bindle)
{
base.OnCreate(bindle);
}
}