Xamarin:活动在用作主要活动时起作用,在作为意图调用时崩溃

时间:2014-02-13 03:56:14

标签: android layout android-intent crash xamarin

我有一个Activity,它将创建一个画布并捕获在其上绘制的签名并保存它。它作为一个独立的活动工作正常。问题是,当我尝试将其作为Intent从另一个Activity调用时,它在尝试加载时崩溃。

以下是来自签名捕获代码的AXML。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews"
    android:id="@+id/mainlayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FF888888">
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/cancel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Cancel" />
        <Button
            android:id="@+id/reset"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Reset" />
        <Button
            android:id="@+id/acceptbtn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/acceptbutton" />
    </LinearLayout>
    <TextView
        android:id="@+id/pleasesigntext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/pleasesign" />
</LinearLayout>

如您所见,我为主要的LinearLayout和Buttons以及TextView设置了id。

以下是活动的代码

public partial class SigCapMainActivity : Activity
{
    static LinearLayout mContent;
    SignatureView mSignature;
    static Bitmap mBitmap;

    public const int SIGNATURE_ACTIVITY = 72;
    static Button cancelButton,
                  resetButton,
                  acceptButton;
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.MainSigCapLayout);

        // Get our button from the layout resource,
        // and attach an event to it
        cancelButton = FindViewById<Button>(Resource.Id.cancel);
        resetButton = FindViewById<Button>(Resource.Id.reset);
        acceptButton = FindViewById<Button>(Resource.Id.acceptbtn);
        acceptButton.Enabled = false;

        acceptButton.Click += acceptButton_Click;
        resetButton.Click += resetButton_Click;
        cancelButton.Click += cancelButton_Click;

        mContent = FindViewById<LinearLayout>(Resource.Id.mainlayout);

        mSignature = new SignatureView(this, null);
        mSignature.SetBackgroundColor(Color.White);
        mContent.AddView(mSignature, WindowManagerLayoutParams.FillParent, 100);
   }
}

你看到我的SetContentView,然后我设置了按钮的变量。 mContent设置为主LinearLayout,然后将SignatureView(自定义视图)添加到主LinearLayout。

当我将其作为主要活动运行时,这可以正常工作。

但是,如果我将其称为来自不同活动的意图

    void releaseFormButton_Click(object sender, EventArgs e)
    {
        Intent intent = new Intent(this, typeof(SignatureCapture.SigCapMainActivity));
        StartActivityForResult(intent, SignatureCapture.SigCapMainActivity.SIGNATURE_ACTIVITY);
    }

SigCapMainActivity在进入

时在OnCreate中崩溃
mContent = FindViewById<LinearLayout>(Resource.Id.mainlayout);

线。 FindViewById崩溃是因为出于某种原因它将mainlayout作为Button类型而不是LinearLayout类型。

请帮我弄清楚这里发生了什么。

0 个答案:

没有答案