android点击按钮没有点击事件

时间:2016-08-03 07:48:21

标签: java android

我的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) 的方式吗?这里有什么遗失的吗?

4 个答案:

答案 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
}