Android 这是app的主要活动。但这段代码不知怎的使我的应用程序崩溃了。为使其工作,应进行哪些更改

Android 这是app的主要活动。但这段代码不知怎的使我的应用程序崩溃了。为使其工作,应进行哪些更改,android,android-layout,Android,Android Layout,我正在学习如何在Android中编程制作UI。我正在尝试制作一个只有一个按钮的应用程序,当点击这个按钮时,会弹出一个祝酒词,告诉你这个按钮被点击了多少次 package com.example.android.dynamicui; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.AppCompatButton; import a

我正在学习如何在Android中编程制作UI。我正在尝试制作一个只有一个按钮的应用程序,当点击这个按钮时,会弹出一个祝酒词,告诉你这个按钮被点击了多少次

package com.example.android.dynamicui;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.AppCompatButton;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

private int mCount=0;
float den = getResources().getDisplayMetrics().density;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Linear Layout
    LinearLayout mLayout = new LinearLayout(this);
    mLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
    mLayout.setOrientation(LinearLayout.VERTICAL);
    mLayout.setGravity(Gravity.CENTER);

    //Button
    AppCompatButton mButton = new AppCompatButton(this);
    mButton.setText("Click me!");
    LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    buttonParams.setMargins(0,(int)(15*den + 0.5f),0,0);
    mButton.setLayoutParams(buttonParams);
    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mCount++;
            Toast.makeText(getBaseContext(), "You pressed button for "+mCount+" times!" , Toast.LENGTH_SHORT ).show();
        }
    });

    //Adding button to Linear Layout
    mLayout.addView(mButton,buttonParams);
    setContentView(mLayout);
}
}

请在设置布局后设置点击按钮,即:-

    public class MainActivity extends AppCompatActivity {

    private int mCount=0;
    float den = getResources().getDisplayMetrics().density;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Linear Layout
        LinearLayout mLayout = new LinearLayout(this);
        mLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
        mLayout.setOrientation(LinearLayout.VERTICAL);
        mLayout.setGravity(Gravity.CENTER);

        //Button
        AppCompatButton mButton = new AppCompatButton(this);
        mButton.setText("Click me!");
        LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        buttonParams.setMargins(0,(int)(15*den + 0.5f),0,0);
        mButton.setLayoutParams(buttonParams);


        //Adding button to Linear Layout
        mLayout.addView(mButton,buttonParams);
        setContentView(mLayout);


mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mCount++;
                Toast.makeText(getBaseContext(), "You pressed button for "+mCount+" times!" , Toast.LENGTH_SHORT ).show();
            }
        });
    }
    }

它崩溃是因为我在onCreate()之前使用了getResources()方法,该方法向'den'变量传递了一个空值。

你能发布stacktrace吗?问题解决了。不过谢谢:)