2017-09-25 16 views
-1

我不明白为什么我的“应用程序”已停止工作?应用停止运行的Android

这是我的MainActivity.class代码: -

package com.apps.nishant.iwillguessyournumber; 

import android.content.DialogInterface; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 
    private Button btnplay = (Button)findViewById(R.id.cmdPlay); 
    private Button btnexit = (Button)findViewById(R.id.cmdExit); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     OnButtonClickListener(); 
    } 

    public void OnButtonClickListener() { 
     btnplay.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

        } 
       } 
     ); 

     btnexit.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         AlertDialog.Builder adb = new AlertDialog.Builder(MainActivity.this); 
         adb.setMessage("Do you really wanna exit?") 
           .setCancelable(false) 
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
             finish(); 
            } 
           }) 
           .setNegativeButton("No", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
             dialog.cancel(); 
            } 
           }); 
        } 
       } 
     ); 
    } 
} 

和我activity_main.xml中

<?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.apps.nishant.iwillguessyournumber.MainActivity"> 

    <Button 
     android:id="@+id/cmdPlay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Play" 
     tools:layout_editor_absoluteX="147dp" 
     tools:layout_editor_absoluteY="219dp" /> 

    <Button 
     android:id="@+id/cmdExit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Exit" 
     tools:layout_editor_absoluteX="147dp" 
     tools:layout_editor_absoluteY="328dp" /> 
</android.support.constraint.ConstraintLayout> 

每当我上运行的Android Genymotion这个应用程序:6.0.0和API 23,它正显示出“不幸的是,(应用程序名称)不工作”

什么是我的代码/平台的问题?

我试着重新启动我的应用程序,抬头几个问题但仍可能得到我的答案,当我使用意向打开一个新的活动,第二个活动不能解析xml文件。

+3

堆栈跟踪将是很有益这里 – Neeraj

+0

请看看这个:https://stackoverflow.com/help/mcve要求在崩溃的帮助,当 – GuilhermeFGL

+1

发表您的堆栈跟踪。否则,我们猜测的问题是什么,甚至有可能不止一个。 –

回答

2

你的应用程序崩溃的源头是以下2行,

private Button btnplay = (Button)findViewById(R.id.cmdPlay); 
private Button btnexit = (Button)findViewById(R.id.cmdExit); 

方法findViewById()应被称为的setContentView后的onCreate()(内侧)。下面的代码应该工作,

package com.apps.nishant.iwillguessyournumber; 

import android.content.DialogInterface; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 
    private Button btnplay; 
    private Button btnexit; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btnplay = (Button)findViewById(R.id.cmdPlay); 
     btnexit = (Button)findViewById(R.id.cmdExit); 
     OnButtonClickListener(); 
    } 

    public void OnButtonClickListener() { 
     btnplay.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

        } 
       } 
     ); 

     btnexit.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         AlertDialog.Builder adb = new AlertDialog.Builder(MainActivity.this); 
         adb.setMessage("Do you really wanna exit?") 
           .setCancelable(false) 
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
             finish(); 
            } 
           }) 
           .setNegativeButton("No", new DialogInterface.OnClickListener() { 
            @Override 
            public void onClick(DialogInterface dialog, int which) { 
             dialog.cancel(); 
            } 
           }); 
        } 
       } 
     ); 
    } 
}