android onclick()没有响应

时间:2018-05-03 18:39:13

标签: java android

我是Android编程新手,并尝试开发TIC TAC TOE游戏。我已经创建了gameLogic()方法,问题在于它无法正常工作,单击ImageView意味着没有显示任何图像。任何帮助将受到高度赞赏。

这是我的代码:

public class MainActivity extends AppCompatActivity {

    public void gameLogic(View view) {
        ImageView tappedView = (ImageView)view;
        tappedView.setTranslationY(-3000f);
        tappedView.setImageResource(R.drawable.black);
        tappedView.animate().translationYBy(3000f).setDuration(500);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

2 个答案:

答案 0 :(得分:0)

public void onClick (View view) { 
ImageView tappedView = (ImageView)view;
tappedView.setTranslationY(-3000f);
tappedView.setImageResource(R.drawable.black); 
tappedView.animate().translationYBy(3000f).setDuration(500)

尝试将班级名称更改为onClick,然后转到XML设置按钮的页面,并在图片视图按钮中声明onClick方法。

您所要做的就是让设计页面知道代码的位置,提供一个通用名称来查找单击的内容。 此外,您还必须添加一个onClick侦听器,该侦听器侦听要单击的按钮,因为代码应该知道它链接到哪个按钮。 因此,在按钮Id上声明一个setonclicklistener方法,然后你就可以了。 在布局设置后,也要在覆盖中编写代码。

希望你明白:)

如果你是新手,请先尝试使用Android,这将非常有帮助我知道在最初的几天里它是多么挣扎。

答案 1 :(得分:0)

猜猜你是Android新手。您可以通过两种不同的方式调用gameLogic方法。

  1. 定义XML View元素的XML属性。

    <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/margin_comp_default" android:layout_marginStart="@dimen/margin_comp_default" android:text="@string/frag_OR" android:textColor="@color/colorAccent" android:textSize="@dimen/font_size11sp" android:onClick="gameLogic"/>

  2. 我不知道您在申请中使用的确切事件,因为您未在问题中发帖。看来你现在正以这种方式使用。

    1. 在类中声明一个事件监听器,如下所示,并在事件触发时调用您的方法。
    2. imageView.setOnClickListener((v) -> { gameLogic (v); });

      如果您不熟悉lambda表达式,请不要感到困惑,此代码类似于以下代码段。

      imageView.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      gameLogic (v);
                  }
      });
      

      不确定您是否希望我在此处使用同一事件来触发您的计划。

      在这两种方式之间,我个人更喜欢第二种方式来声明侦听器,更好地在onCreateonStart生命周期方法中声明它们。

      我更喜欢第二种方式的原因是,它更容易识别类中的解决问题,因为它在编译时提示错误。尽管Android Studio在XML UI编辑器中提供了出色的工具,但对我来说它有时会出现问题。