Java 在安卓上点击按钮显示随机月份?
我试图创建一个应用程序,让用户点击一个按钮,它将显示一个随机的月份。我在strings.xml文件中创建了一个字符串数组。下面是我的main.java、strings.xml和activity.xml。我尝试运行应用程序,但它只是强制关闭Java 在安卓上点击按钮显示随机月份?,java,android,xml,Java,Android,Xml,我试图创建一个应用程序,让用户点击一个按钮,它将显示一个随机的月份。我在strings.xml文件中创建了一个字符串数组。下面是我的main.java、strings.xml和activity.xml。我尝试运行应用程序,但它只是强制关闭 package com.example.datebutton; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.v
package com.example.datebutton;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.graphics.Color;
public class Main extends Activity
{
Button btn;
@Override
public void onCreate(Bundle b)
{
super.onCreate(b);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn1);
final String[] months = getResources().getStringArray(R.array.Months);
final TextView tv =(TextView)findViewById(R.id.text1);
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
int rand = (int) (Math.random() * 12);
tv.setText(months[rand]);
}
});
}
}
这是我的activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="updateMonth"
android:text="@string/app_name" />
<TextView
android:id="@+id/text1"
android:layout_width="68dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_vertical"
android:text="@array/Months" />
</LinearLayout>
这是我的strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">DateButton</string>
<string-array name="Months">
<item>January</item>
<item>Feburary</item>
<item>March</item>
<item>April</item>
<item>May</item>
<item>June</item>
<item>July</item>
<item>August</item>
<item>September</item>
<item>October</item>
<item>November</item>
<item>December</item>
</string-array>
</resources>
日期按钮
一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
我仍然收到错误,应用程序仍然说不幸的是你的应用程序关闭了。日志在下面
09-11 16:55:17.472:W/Resources(1638):转换为字符串:TypedValue{t=0x1/d=0x7f0c0000 a=-1r=0x7f0c0000}
09-11 16:55:17.512:D/AndroidRuntime(1638):关闭虚拟机
09-11 16:55:17.512:W/dalvikvm(1638):threadid=1:线程以未捕获异常退出(组=0xb3a8fba8)
09-11 16:55:17.532:E/AndroidRuntime(1638):致命异常:main
09-11 16:55:17.532:E/AndroidRuntime(1638):进程:com.example.datebutton,PID:1638
09-11 16:55:17.532:E/AndroidRuntime(1638):java.lang.RuntimeException:无法启动活动组件信息{com.example.datebutton/com.example.datebutton.Main}:java.lang.ClassCastException:android.widget.TextView无法转换为android.widget.Button
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.ActivityThread.access$800(ActivityThread.java:135)
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.os.Handler.dispatchMessage(Handler.java:102)上
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.os.Looper.loop(Looper.java:136)
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.ActivityThread.main(ActivityThread.java:5017)上
09-11 16:55:17.532:E/AndroidRuntime(1638):位于java.lang.reflect.Method.Invokenactive(本机方法)
09-11 16:55:17.532:E/AndroidRuntime(1638):位于java.lang.reflect.Method.invoke(Method.java:515)
09-11 16:55:17.532:E/AndroidRuntime(1638):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-11 16:55:17.532:E/AndroidRuntime(1638):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
9-11 16:55:17.532:E/AndroidRuntime(1638):在dalvik.system.NativeStart.main(本机方法)
09-11 16:55:17.532:E/AndroidRuntime(1638):原因:java.lang.ClassCastException:android.widget.TextView无法强制转换为android.widget.Button
09-11 16:55:17.532:E/AndroidRuntime(1638):位于com.example.datebutton.Main.onCreate(Main.java:24)
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.Activity.performCreate(Activity.java:5231)上
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)上
09-11 16:55:17.532:E/AndroidRuntime(1638):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
09-11 16:55:17.532:E/AndroidRuntime(1638):。。。11更多您忘记添加行:
setContentView(R.layout.activity)代码>在尝试实例化按钮对象btn之前。要在活动中使用布局,必须将它们连接在一起。下面是您的代码的外观:
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.activity);
btn = (Button) findViewById(R.id.btn1);
final String[] months = getResources().getStringArray(R.array.Months);
final TextView tv =(TextView)findViewById(R.id.text1);
btn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
int r, g, b;
int rand = (int) (Math.random() * 12);
tv.setText(months[rand]);
}
});
}
堆栈跟踪。它是在启动时崩溃还是在单击按钮后崩溃?您是否将活动添加到清单文件。它在我启动应用程序后崩溃。请将您的logcat信息粘贴到此处。