2016-06-02 5 views
0

я новичок в Android, и я пытался сделать мое приложение работает на всех телефонах она работает в 23 API и не работают в 19 API KitKat он падает каждый раз, когда я открыть приложениеява андроид аварии setOnClickListener

Есть ли способ исправить эту проблему? и не могли бы вы сказать мне, что моя проблема, и объясните мне,

public class MainActivity extends AppCompatActivity { 
private Button ButtonStart,ButtonReset ; 
private TextView Number ; 
private CountDownTimer myTimer ; 
private MediaPlayer TimePassesSound; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ButtonStart = (Button)findViewById (R.id.button); //initialize view 
    Number = (TextView)findViewById (R.id.textView); //initialize view 
    ButtonReset = (Button)findViewById (R.id.button2); 
    MediaPlayer TimePassesSound; 
    TimePassesSound = new MediaPlayer(); 
    TimePassesSound = MediaPlayer.create(getApplicationContext(), R.raw.time_passing); 
    addListerOnButton(); //call method of the view 
    addListerOnButton2(); //call method of the view 
} 

public void addListerOnButton() { 
    ButtonStart.setOnClickListener (
      new View.OnClickListener() { 
       public void onClick(View v) { 
        if (ButtonStart.getText().toString() != "Stop") { 
         int StartTime = Integer.parseInt (Number.getText().toString()); 
         myTimer = new CountDownTimer (StartTime*1000, 1000) { 
          public void onTick(long millisUntilFinished) { 
           ButtonStart.setText ("Stop"); 
           Number.setText (""+millisUntilFinished/1000); 
          } 
          public void onFinish() { 
           Number.setText("60"); 
           ButtonStart.setText ("Start"); 
           TimePassesSound.setLooping(false); 
           TimePassesSound.start(); 
          } 
         }.start(); 
        } else { 
         ButtonStart.setText ("Start"); 
         myTimer.cancel(); 
        } 
       } 
      } 
    ); 
} 


public void addListerOnButton2() { 
    ButtonReset.setOnClickListener (
      new View.OnClickListener() { 
       public void onClick(View v) { 
        if ("Start".equals (ButtonStart.getText().toString())) { 
         Number.setText ("60"); 
         myTimer.cancel(); 
        }else{ 
         Toast.makeText (MainActivity.this,"You must stop the countdown first",Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 
    ); 
} 

}

public void addListerOnButton2() { 
    ButtonReset.setOnClickListener (
      new View.OnClickListener() { 
       public void onClick(View v) { 
        if ("Start".equals (ButtonStart.getText().toString())) { 
         Number.setText ("60"); 
         myTimer.cancel(); 
        }else{ 
         Toast.makeText (MainActivity.this,"You must stop the countdown first",Toast.LENGTH_LONG).show(); 
        } 
       } 
      } 
    ); 
} 

}

- Сообщения об ошибках

Process: com.aabdelrahman730yahoo.mydesign, PID: 3627 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aabdelrahman730yahoo.mydesign/com.aabdelrahman730yahoo.mydesign.MainActivity}: java.lang.NullPointerException 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
    at android.app.ActivityThread.access$800(ActivityThread.java:135) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
    at com.aabdelrahman730yahoo.mydesign.MainActivity.addListerOnButton(MainActivity.java:51) 
    at com.aabdelrahman730yahoo.mydesign.MainActivity.onCreate(MainActivity.java:43) 
    at android.app.Activity.performCreate(Activity.java:5231) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  
    at android.app.ActivityThread.access$800(ActivityThread.java:135)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:136)  
    at android.app.ActivityThread.main(ActivityThread.java:5017)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:515)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)  
    at dalvik.system.NativeStart.main(Native Method)  

Основная деятельность:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.aabdelrahman730yahoo.mydesign.MainActivity" 
android:touchscreenBlocksFocus="false" 
android:background="#34416a"> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Start" 
    android:id="@+id/button" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true"/> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Reset" 
    android:id="@+id/button2" 
    android:layout_above="@+id/button" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="60" 
    android:id="@+id/textView" 
    android:singleLine="true" 
    android:textSize="80dp" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true"/> 

Это было моей полной проблемы я надеюсь, кто-то может помочь мне с

+0

Можете ли вы поделиться своим расположением xml надеждой, которая поможет нам. –

+0

Пожалуйста, правильно отформатируйте журнал сообщений об ошибках для лучшей читаемости. – Inian

ответ

3

Вы вызываете метод представления без его инициализации.

Вы должны инициализировать вид первого, а затем вызвать метод

ButtonStart = (Button)findViewById (R.id.button); //initialize view Number = (TextView)findViewById (R.id.textView); //initialize view addListerOnButton(); //call method of the view addListerOnButton2(); //call method of the view

+0

Я сделал это как та же проблема ... – BeBo1

+0

@ BeBo1 проверить, существуют ли кнопки 'button' и' textView' в макете 'activity_main' –

+0

, они существуют, и я буду публиковать их – BeBo1

0

Проверьте это,

Как уже упоминалось @Rod_ и из журнала ошибок, ясно говорится, что точка зрения не инициализирован.

java.lang.NullPointerException на com.aabdelrahman730yahoo.mydesign.MainActivity.addListerOnButton (MainActivity.java:51) на com.aabdelrahman730yahoo.mydesign.MainActivity.onCreate (MainActivity.java:43)

Убедитесь, что в вашем java-коде были инициализированы следующие кнопки.

ButtonStart и ButtonReset - Buttonreset здесь не инициализируется.

Изменить код, как указано ниже. под OnCreate

ButtonStart = (Button)findViewById (R.id.button); 
ButtonReset = (Button)findViewById (R.id.button_); --> You missed it .. 
Number = (TextView)findViewById (R.id.textView); 
addListerOnButton(); 
addListerOnButton2(); 

Надеется, что это кажется очевидным .. !!

UPDATE:

Вы не можете инициализировать медиаплеера. Проблема может быть связана с использованием медиаплеера. Просьба проверить код ниже.

MediaPlayer mediaPlayer; 
mediaPlayer = new MediaPlayer(); 
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.time_passing); 

в вашем случае

MediaPlayer TimePassesSound; 
TimePassesSound = new MediaPlayer(); 
TimePassesSound = MediaPlayer.create(getApplicationContext(), R.raw.time_passing); 

Добавьте эти строки Befor вызова функции.

+0

Я сделал это, как будто я клянусь той же проблемой – BeBo1

+0

@ BeBo1 вы можете поделиться своим xml-макетом для вышеуказанного кода. что может быть полезно –

+0

Выполнено, извините – BeBo1

Смежные вопросы