2011-06-29 264 views
-1

我正在使用Visual Studio 2010和Mono Droid v1.0.1开始在Android平台的C#中进行编程。MonoDroid - 初学者

我有一个问题。从主要活动要调用另一个活动('prueba'),它表现不错,但我没有在屏幕上显示任何内容。也就是说,向我展示一个新的屏幕,标题为“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> 
    
  • Activity1.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(); 
        } 
        } 
    } 
    
  • Prueba.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> 
    
+0

太多的代码,你应该孤立是什么原因造成的问题,比如你有没有试着用不同的替换您的活动?如果其他活动有效,那么您的基本活动不可能成为问题。 – Guvante

+0

你不是在'Prueba'中调用'base.OnCreate',那是故意的吗? – Guvante

回答

6

不是MonoDroid的开发者,但我注意到,你错过了 “覆盖” 的关键字上第二项活动onCreate并且不会调用父项。

0

单式的方式来增加大部分(如果不是所有的,不知道)“清单选项”是通过开展此项活动(或服务)之类的属性。

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); 
    } 
} 
+0

实际上,我现在看到这个WRITE_EXTERNAL_STORAGE设置是一个用户权限,并且如果按照上面的方式进行设置,它将显示为活动设置(android:permission),而不是清单文件中的用户权限。哦,我只记得,你在VS中设置了用户权限用户的项目属性(它是一个所有权限的复选框列表)。 – samosaris

+0

它们实际上是“使用许可”标签,而不是“用户许可”,但除此之外,其他所有内容都是正确的。 – samosaris