点击按钮没有反应
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context="com.hala.view01.Main2Activity"> <RelativeLayout android:id="@+id/rl" android:layout_width="368dp" android:layout_height="439dp" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toTopOf="@+id/button"> <ImageView android:id="@+id/iv" android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/timg" android:visibility="gone"/> </RelativeLayout> <Button android:onClick="onClick" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="0dp" android:text="开始" android:id="@+id/button" app:layout_constraintHorizontal_weight="1" android:layout_marginStart="8dp" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:text="分数" android:textSize="25sp" android:gravity="center" app:layout_constraintLeft_toRightOf="@+id/tv" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" app:layout_constraintTop_toTopOf="@+id/button" android:layout_marginTop="8dp" android:layout_marginRight="8dp" app:layout_constraintVertical_bias="0.521" app:layout_constraintRight_toRightOf="parent" app:layout_constraintHorizontal_weight="1" android:layout_marginEnd="8dp" /> </android.support.constraint.ConstraintLayout>
java文件
package com.hala.view01; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import java.lang.ref.WeakReference; import java.util.Random; public class Main2Activity extends AppCompatActivity implements View.OnClickListener,View.OnTouchListener { public static final int Code = 123; public static final int Rand = 500; public static final int MAX = 10; private TextView tv; private Button bt; private ImageView iv; private RelativeLayout rl; private int total; private int success; private DiglettHandler diglettHandler=new DiglettHandler(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); initView(); } private void initView() { tv = (TextView)findViewById(R.id.tv); bt = (Button)findViewById(R.id.button); iv = (ImageView)findViewById(R.id.iv); rl = (RelativeLayout)findViewById(R.id.rl); bt.setOnClickListener(this); iv.setOnTouchListener(this); //此句容易漏掉 DiglettHandler diglettHandler=new DiglettHandler(this); } /** * 点击按钮开始游戏 * @param v */ @Override public void onClick(View v) { switch (v.getId()){ case R.id.bt: start(); break; } } /** * 开始打第一个地鼠 * 发送消息 */ private void start() { total=0; success=0; bt.setText("游戏中。。。"); bt.setEnabled(false); next(0); } /** * 打第一个以后的地鼠 * @param delayTime */ private void next(int delayTime){ //Random().nextInt(368)表示生成0~368的随机数,包括0,不包括368 int x=new Random().nextInt(368); int y=new Random().nextInt(439); Message message=Message.obtain(); message.what= Code; message.arg1=x; message.arg2=y; diglettHandler.sendMessageDelayed(message,delayTime); total++; } /** * 游戏结束的反应 */ private void clear(){ total=0; success=0; iv.setVisibility(View.GONE); bt.setText("开始"); bt.setEnabled(true); } /** * 打中地鼠后的反应 * @param v * @param event * @return */ @Override public boolean onTouch(View v, MotionEvent event) { //地鼠为不可见 v.setVisibility(View.GONE); success++; tv.setText("打到"+success+"只,漏掉"+(total-success)+"只哦"); return false; } public static class DiglettHandler extends Handler{ public final WeakReference<Main2Activity> mWeaker; public DiglettHandler(Main2Activity activity) { mWeaker=new WeakReference<Main2Activity>(activity); } /** * 点击屏幕后的处理机制 * @param msg */ @Override public void handleMessage(Message msg) { super.handleMessage(msg); Main2Activity activity=mWeaker.get(); switch (msg.what){ case Code: if(activity.total> MAX){ activity.clear(); activity.tv.setText("^ _ ^ 结束了,下次再来 ^ _ ^"); return; } int x=msg.arg1; int y=msg.arg2; activity.iv.setX(x); activity.iv.setY(y); //默认为不显示,这里要显示出来 activity.iv.setVisibility(View.VISIBLE); //传回随机时间,执行next方法 int randomTime=new Random().nextInt(Rand)+ Rand; activity.next(randomTime); break; } } } }
配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hala.view01"> <!-- 网络链接,写文件和读文件的权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/title1" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"></activity> <activity android:name=".Main2Activity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
程序运行后显示了开始界面但点击开始按钮并没有反应
20
收起
正在回答
3回答
闪退你检查一下as底部的Android Monitor标签,查看一下红色的错误信息是什么?tv设置了显示文本,但你的TextView没有对应tv的id
慕UI6705487
2018-02-02 17:52:01
按钮问题已经解决,但游戏开始一段时间就闪退了,不知道为啥
Android网络操作与数据存储2018版
- 参与学习 人
- 提交作业 307 份
- 解答问题 1613 个
本专题是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理。介绍了Android内外部文件存储、轻量级数据库SQLite的使用。利用屏幕适配、状态保持、百度地图解决实际问题。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星