Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在安卓上点击按钮显示随机月份?_Java_Android_Xml - Fatal编程技术网

Java 在安卓上点击按钮显示随机月份?

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

我试图创建一个应用程序,让用户点击一个按钮,它将显示一个随机的月份。我在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.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信息粘贴到此处。