2016-10-31 3 views
2

My PanelActivity содержит recyclerView со списком элементов. Каждый элемент имеет событие click. Этот щелчок открывается DetailsActivity.Диалог отклонения вызывает завершение операции

DetailsActivity имеет плавающую кнопку, которая открывает полноэкранный диалог (мой класс DetailDialogFragment расширяет DialogFragment).

DetailDialogFragment имеет кнопку Up/Home с увольнением.

Проблема: Если пользователь выполняет щелчок по кнопке «Вверх», диалог отклоняется, а также DetailsActivity исчезает, и приложение возвращается к PanelActivity.

Возможная причина. Под кнопкой «Вверх» диалогового окна находится кнопка «Вверх» DetailsActivity. Возможно ли запустить два события щелчка, когда диалог завершен, и оба имеют кнопку «Вверх» в том же месте?


Редактировать: Чтобы показать код.

Open DetailsActivity from PanelActivity (нажатие одного элемента в recyclerView).

Intent intent = new Intent(context, DetailsActivity.class); 
intent.putExtra("headerCode", headerCode.getText()); 
context.startActivity(intent); 

Up button in DetailsActivity.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     // Respond to the action bar's Up/Home button 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

Открыть полноэкранный диалог в DetailsActivity.

private void showCreateDetailDialog() { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    DetailDialogFragment newFragment = new DetailDialogFragment(); 

    // The device is smaller, so show the fragment fullscreen 
    FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    // For a little polish, specify a transition animation 
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    // To make it fullscreen, use the 'content' root view as the container 
    // for the fragment, which is always the root view for the activity 
    transaction.add(android.R.id.content, newFragment) 
      .addToBackStack(null).commit(); 
} 

И, наконец, кнопка вверх в деталяхDialogFragment.

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.save) { 
     validateForm(); 
     return true; 
    } else if (id == android.R.id.home) { 
     // handle close button click here 
     dismiss(); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

Опубликовать исходный код – Krish

+0

@Krish Я отредактировал мое сообщение. – JCarlos

ответ

0

Нет, я думаю, что это не возможно, может быть, это проблема устройства, проверить его на эмуляторе Android или другого устройства. Можете ли вы поделиться своим кодом, чтобы попытаться помочь вам?

+0

См. Снова. И это происходит и в эмуляторе. – JCarlos

1

Я не тестировал его, но я думаю, что проблема здесь, где вы вызываете функцию увольнения(). Сначала вам может понадобиться ссылка на DialogFragment. Я думаю, что технически вы просто звоню this.dismiss(); где это приравнивает активность вы работаете в

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.save) { 
     validateForm(); 
     return true; 
    } else if (id == android.R.id.home) { 
     // handle close button click here 
     dismiss(); // problem is with this call 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

Вы могли бы попробовать что-то вроде этого:.

private DetailDialogFragment detailFragment; 

private void showCreateDetailDialog() { 
    detailFragment = new DetailDialogFragment(); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 

    FragmentTransaction transaction = fragmentManager.beginTransaction(); 
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
    transaction.add(android.R.id.content, newFragment).addToBackStack(null).commit(); 
} 

и теперь внутри onOptionsItemSelected():

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.save) { 
     validateForm(); 
     return true; 
    } else if (id == android.R.id.home) { 
     // handle close button click here 
     detailFragment.dismiss(); 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

Благодарим вас за помощь. Но атрибут '' detailFragment''' определен в активности, а фрагмент - это другой класс. – JCarlos

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

  • Нет связанных вопросов^_^