我正在使用Visual Studio 2010和Mono Droid v1.0.1开始使用C#进行Android平台编程。
我有问题。从主要活动想要调用另一个activty('prueba'),它做得很好,但我没有在屏幕上显示任何内容。也就是说,给我看一个标题为'prueba'的新屏幕,但没有显示任何内容(全部为黑色)。
这是我正在使用的代码:
<?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>
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();
}
}
}
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);
}
}
}
<?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>
<?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>
答案 0 :(得分:6)
不是MonoDroid开发人员,但我注意到您在第二个活动onCreate上缺少“override”关键字,也没有调用父级。
答案 1 :(得分:0)
我想你想从Prueba.cs中删除MainLauncher = true。这用于指示应用程序启动时应启动的活动。
http://docs.mono-android.net/index.aspx?link=P%3aAndroid.App.ActivityAttribute.MainLauncher
答案 2 :(得分:0)
Mono-esque添加大多数(如果不是全部,不确定)“清单选项”的方式是通过实现活动(或服务)的类的属性。
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);
}
}