一个按钮,但2个onClick动作

时间:2018-01-07 19:16:12

标签: java android

我正在制作一个制作事实应用程序的一般教程,当我点击“下一个事实”按钮时,它工作正常并转移到下一个事实。但我还想为每个事实添加一个来源,但这意味着我需要有2个Onclick操作,但是在1个按钮上,我真的不知道该怎么做。

我环顾四周,我只能找到多个按钮。

Facts.java:

package com.example.me.myapplication;


public class Facts {
String Facts [] = {
        "Fact 1",
        "Fact 2",

};

int i = 0;

public String nextFact()
{
    i++;
    return Facts[i];
}

}

source.java:

package com.example.me.myapplication;



public class source {
String source [] = {
        "source 1",
        "source 2",
};

int i = 0;

public String nextsource()
{
    i++;
    return source[i];
}
}

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F44336"
tools:context="com.example.me.myapplication.MainActivity">

<TextView
android:id="@+id/factTextBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:fontFamily="@font/gothamblack"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:text="fact"
android:textAllCaps="true"
android:textColor="#fff"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="60dp"
    android:onClick="genFact"
    android:text="Next Fact" />

<TextView
    android:id="@+id/sourceTextBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/factTextBox"
    android:layout_centerHorizontal="true"
    android:text="TextView" />

 </RelativeLayout>

MainActivity.java:

package com.example.me.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

TextView factBox;
Facts factHolder = new Facts();

TextView sourceBox;
source sourceHolder = new source();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    factBox = (TextView) findViewById(R.id.factTextBox);
    sourceBox = (TextView) findViewById(R.id.sourceTextBox);
}

public void genFact(View view)
{
    factBox.setText(factHolder.nextFact());
}

public void gensource(View view)
{
    sourceBox.setText(sourceHolder.nextsource());
}
}

3 个答案:

答案 0 :(得分:0)

不是在布局中声明你的on click函数(.xml文件),而是使用函数setOnClickListener并编写你自己的函数。

factBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { genFact(factBox); // or whatever you want });

答案 1 :(得分:0)

您可以使用longClickListner查看源链接,使用onClickListner查看下一个来源。

您只需return true in the longClickListner即可同时使用它们。

答案 2 :(得分:0)

你可以简单地在XML中使用onClick,并在你的代码中调用onClickListener。

factBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            genFact(factBox); // or whatever you want
    });

第二个要从XML调用

public void genFact(View view) {

factBox.setText(factHolder.nextFact()); }