У меня серьезная проблема с моей программой будильника. Сначала все прошло отлично. Но после того, как я попытался создать всплывающее окно, содержащее кнопку для воспроизведения видео на YouTube (при срабатывании будильника), оно продолжает падать.
Сначала файл ids. xml был полностью пустым, поэтому я попытался заполнить все возможные идентификаторы из. XML файлов
<resources>
android:id="@+id/update_text"
android:id="@+id/youtube_player_view"
android:id="@+id/open_video"
android:id="@+id/richard_spinner"
android:id="@+id/alarm_off"
android:id="@+id/alarm_on"
android:id="@+id/toolbar"
</resources>
Затем я посмотрел на Класс MainActivity и проверил все скобки, скобки, позиции блоков кода ... в течение двух часов подряд, но безрезультатно. Класс MainActivity после добавления функции видео выглядит следующим образом:
copackage com.example.maalarm.finalalarm;
import ...
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
YouTubePlayerView youTubePlayerView;
Button button;
YouTubePlayer.OnInitializedListener onInitializedListener;
//to make our alarm manager
AlarmManager alarmManager;
TimePicker alarmTimePicker;
TextView updateText;
Context context;
PendingIntent pendingIntent;
int chooseRingTone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
this.context = this;
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmTimePicker = (TimePicker) findViewById(R.id.timePicker);
updateText = (TextView) findViewById(R.id.update_text);
final Calendar calendar = Calendar.getInstance();
final Intent myIntent = new Intent(this.context, Alarm_Receiver.class);
// open video button
// when open video button is pressed
button = (Button) findViewById(R.id.open_video);
youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player_view);
onInitializedListener = new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.loadVideo("AcCfvmtIUAQ");
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
};
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener);
}
});
// spinner/ drop-down list
Spinner spinner = (Spinner) findViewById(R.id.richard_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.alarm_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
// alarm on button
Button alarm_on = (Button) findViewById(R.id.alarm_on);
alarm_on.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onClick(View v) {
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
int hour = alarmTimePicker.getHour();
int minute = alarmTimePicker.getMinute();
String hour_string = String.valueOf(hour);
String minute_string = String.valueOf(minute);
if (hour > 12) {
hour_string = String.valueOf(hour - 12);
}
if (minute < 10) {
//10:7 --> 10:07
minute_string = "0" + String.valueOf(minute);
}
set_alarm_text("Alarm set to: " + hour_string + ":" + minute_string);
myIntent.putExtra("extra", "alarm on");
myIntent.putExtra("ring_tone_choice", chooseRingTone);
Log.e("The ringtone id is" , String.valueOf(chooseRingTone));
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0,
myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
pendingIntent);
}
});
// alarm off button
Button alarm_off = (Button) findViewById(R.id.alarm_off);
alarm_off.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// method that changes the update text Textbox
set_alarm_text("Alarm off!");
// cancel the alarm
alarmManager.cancel(pendingIntent);
// put extra string into myIntent
// tells the clock that you pressed the "alarm off" button
myIntent.putExtra("extra", "alarm off");
myIntent.putExtra("ring_tone_choice", chooseRingTone);
// stop the ringtone
sendBroadcast(myIntent);
}
});
}
private void set_alarm_text(String output) {
updateText.setText(output);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
chooseRingTone = (int) id;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Another interface callback
}
}
Блок кода над счетчиком был добавлен недавно, поэтому это может быть проблемой. Кроме того, у меня есть этот файл. XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"
android:fitsSystemWindows="true"
tools:context="com.example.maalarm.finalalarm.MainActivity">
<Button
android:id="@+id/open_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/youtube_player_view"
android:layout_centerHorizontal="true"
android:layout_marginTop="177dp"
android:clickable="true"
android:focusable="true"
android:text="OPEN VID"
tools:ignore="HardcodedText" />
<com.google.android.youtube.player.YouTubePlayerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/youtube_player_view"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
Но, похоже, с этим проблем нет. Не могли бы вы предложить способ решить эту проблему? Я немного отчаялся, и у меня закончились возможные пути отладки. Спасибо!