简体   繁体   English

XML更改布局按钮崩溃的应用程序

[英]XML change Layout button crashing app

I have made a simple app because I am just starting with android. 我做了一个简单的应用程序,因为我只是从android开始。 I have made a button to change the layout, but after testing it crashes the app every time. 我做了一个按钮来更改布局,但是经过测试,它每次都会使应用程序崩溃。 here is my code 这是我的代码

package nathanschmidt.nathan;


    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.NumberPicker;
    import android.widget.TextView;
    import android.graphics.Color;
    import android.content.Intent;
    import android.widget.Button;
    import android.view.View;
    import android.view.View.OnClickListener;
public class MainActivity extends ActionBarActivity {
TextView numberView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    numberView = (TextView) findViewById(R.id.numberview);
    NumberPicker numberPicker = (NumberPicker) findViewById(R.id.numberPicker);
    numberPicker.setMaxValue(10);
    numberPicker.setMinValue(0);
    numberPicker.setWrapSelectorWheel(true);
    numberPicker.setOnValueChangedListener(
            new NumberPicker.OnValueChangeListener() {
                @Override
                public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

                    int color;
                    if (newVal < 1) {
                        color = Color.parseColor("#000000");
                    } else if (newVal < 2) {
                        color = Color.parseColor("#01093B");
                    } else if (newVal < 3) {
                        color = Color.parseColor("#000C57");
                    } else if (newVal < 4) {
                        color = Color.parseColor("#000F73");
                    } else if (newVal < 5) {
                        color = Color.parseColor("#00128a");
                    } else if (newVal < 6) {
                        color = Color.parseColor("#00159E");
                    } else if (newVal < 7) {
                        color = Color.parseColor("#0017B0");
                    } else if (newVal < 8) {
                        color = Color.parseColor("#001AC4");
                    } else if (newVal < 9) {
                        color = Color.parseColor("#001FE8");
                    } else {
                        color = Color.parseColor("#0022FF");
                    }

                    numberView.setTextColor(color);

                }
            });
    super.onCreate(savedInstanceState);
    setContentView(R.layout.about);

    // Watch for button clicks.
    Button button = (Button)findViewById(R.id.change);
    button.setOnClickListener(submitListener);
}

private OnClickListener submitListener = new OnClickListener() {
    public void onClick(View v) {

    }
};

xml XML文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:background="@drawable/os2">


<TextClock
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/numberview"
    android:textSize="100dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true" />

<NumberPicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/numberPicker"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"/>


<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="change"
    android:id="@+id/change"
    android:layout_below="@+id/numberPicker"
    android:layout_centerHorizontal="true" />

What's crashing actually is those two lines of code 实际上崩溃的是这两行代码

super.onCreate(savedInstanceState);
setContentView(R.layout.about);

You are here calling Activity class onCreate() method twice which is not a good practice at all and you are changing the layout in the setContentView() method and then when you are using the numberView you initialized from the activity_main layout while your current layout is the about layout. 您在这里两次调用Activity类的onCreate()方法都不是一个好习惯,并且您正在更改setContentView()方法中的布局,然后在使用当前从当前Activity布局从activity_main布局初始化的numberView时关于布局。 I'm wondering what Exception did you get is it NullPointerException or IllegalStateException . 我想知道您得到的异常是NullPointerException还是IllegalStateException

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM