我的activity_main.xml
视图中只有一个按钮,如下所示:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/capt_sig"
android:onClick="openCaptureActivity" //click event here
android:text="@string/capture_signature"
android:layout_below="@+id/result"
android:layout_alignParentEnd="true"
android:layout_marginTop="235dp"
android:clickable="true"
android:typeface="sans" />
并在onclick
MainActivity.java
事件
public void openCaptureActivity(View view){
setContentView(R.layout.activity_capture_signature);
}
现在onClick
button
activity
activity_capture_signature.xml
<android.gesture.GestureOverlayView
android:id="@+id/signaturePad"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_weight="5"
android:background="#FFF"
android:eventsInterceptionEnabled="true"
android:fadeEnabled="false"
android:gestureColor="#000"
android:gestureStrokeLengthThreshold="0.1"
android:gestureStrokeType="multiple"
android:orientation="horizontal">
</android.gesture.GestureOverlayView>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/saveSig"
android:layout_marginTop="100dp"
android:onClick="SaveSignature" //click event here
android:text="Capture"/>
下方onClick
,名称为button
,此处为内容。
CaptureSignatureActivity.java
我已经在public void SaveSignature(View v){
//Do some stuff
}
为SaveSignature
添加了click event
,您可以看到该事件,并在activity
中写入,如下所示:
activity
即使使用此设置,val myList = List( ".+\\.a"
, ".+\\.b"
, ".+\\.c" )
val myListRE = myList.mkString("|").r
"blah.b" match {
case myListRE() => println("hit")
}
事件也会抛出致命异常,如下所示:
java.lang.IllegalStateException:找不到方法 SaveSignature(View)在父或祖先的上下文中 android:在视图类上定义的onClick属性 android.support.v7.widget.AppCompatButton,id为'saveSig'
即使在<schedule>
<job>
<name>myCronjob</name>
<job-class>ch.scheduler.myCronjob</job-class>
</job>
<trigger>
<cron>
<name>myCronjob</name>
<job-name>myCronjob</job-name>
<cron-expression>0 0/30 * * * ? *</cron-expression>
</cron>
</trigger>
...
</schedule>
中添加<xsl:variable name="writeMode">
<xsl:choose>
<xsl:when test="$lang ='fa'">
<xsl:value-of select="'rl-tb'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'lr-tb'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="A4-portrait"
page-height="29.7cm" page-width="21.0cm" margin="2cm">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4-portrait">
<fo:flow flow-name="xsl-region-body">
<fo:block-container write-mode="{$writeMode}" font-family="{$font}" language="{$lang}">
<fo:block>
بهترین قیمت دوچرخه کوهستان موجود است.
</fo:block>
</fo:block-container>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
之后,我仍然无法理解为什么会发生这种异常。这是因为我从父母那里打开wg4.bean.ancestor.TechniqueException: Error generating PDF file : org.apache.fop.fo.ValidationException: Invalid property encountered on "fo:block-container": write-mode (No context info available)
的方式吗?这里有什么遗失的吗?
答案 0 :(得分:3)
Use different method for clicking button.for example
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do stuff
}
});
答案 1 :(得分:3)
您需要在CaptureSignatureActivity.java
方法中启动新活动openCaptureActivity()
。目前,您正试图在MainActivity
内部扩展布局。做
public void openCaptureActivity(View view){
startActivity(new Intent(MainActivity.this, CaptureSignatureActivity.class));
}
答案 2 :(得分:1)
public void openCaptureActivity(View view){
setContentView(R.layout.activity_capture_signature);
}
此方法不会更改您的活动。你还在MainActivity
。
如果您在xml中定义click方法,则必须在MainActivity
中定义方法或使用OnClickListener
。
答案 3 :(得分:1)
public void openCaptureActivity(View view){
setContentView(R.layout.activity_capture_signature);
}
仔细查看setContentView();
此方法用于将布局内容附加/设置到您的Actiity。可能您也在onCreate()
方法中使用了该方法。
在activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/capt_sig"
android:onClick="openCaptureActivity" //click event here
android:text="@string/capture_signature"
android:layout_below="@+id/result"
android:layout_alignParentEnd="true"
android:layout_marginTop="235dp"
android:clickable="true"
android:typeface="sans" />
然后在MainActivity.java
中使用:
public void openCaptureActivity(View view){
//setContentView(R.layout.activity_capture_signature);
startActivity(new Intent(MainActivity.this,CaptureSignatureActivity.class));
}
现在你的CaptureSignatureActivity
应该是这样的
在其onCreate()
方法中,使用此行设置您在setContentView(R.layout.activity_capture_signature);
然后您可以在CaptureSignatureActivity中使用第二次单击方法按钮
public void SaveSignature(View v){
//Do some stuff
}