我正在制作一个制作事实应用程序的一般教程,当我点击“下一个事实”按钮时,它工作正常并转移到下一个事实。但我还想为每个事实添加一个来源,但这意味着我需要有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());
}
}
答案 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()); }