我有一个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类型。
请帮我弄清楚这里发生了什么。