19

Tôi cố gắng để mở một đoạn khi tôi nhấn một thông báo trên thanh thông báo. cấu trúc ứng dụng của tôi là:Làm thế nào để mở trang mảnh, khi ép một thông báo trong android

  • một hoạt động cơ bản với một menu nav ngăn kéo
  • một số đoạn được mở từ menu

    b.setOnClickListener(new OnClickListener() { 
    
         @SuppressWarnings({ "deprecation", "static-access" }) 
         public void onClick(View v) { 
    
         w_nm=(NotificationManager) getActivity().getSystemService(getActivity().NOTIFICATION_SERVICE); 
    
         Notification notify=new Notification(R.drawable.notnificationlogo,waternoti,System.currentTimeMillis()); 
    
         Intent notificationIntent = new Intent(getActivity(), Abc.class); 
    
    
    
         PendingIntent pending=PendingIntent.getActivity(getActivity(), 0,notificationIntent, 0); 
    
    
         notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
           | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    
         notify.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; 
    
          notify.setLatestEventInfo(getActivity(),waternoti,waternoti1, pending); 
    
         w_nm.notify(0, notify); 
    

bất cứ ai có thể cho tôi biết làm thế nào để liên kết với đoạn tiếp theo trang (mã hiện tại nằm trong lớp mở rộng phân đoạn)

+0

Người nhận phát sóng? http://developer.android.com/reference/android/content/BroadcastReceiver.html – James

+0

Bạn có thể vui lòng xây dựng nó, tôi mới đến android –

Trả lời

24

Bạn sẽ cần phải bắt đầu hoạt động cơ bản như bình thường, nhưng thêm một số extr một thông tin cho ý định về những mảnh menu sẽ được mở ra. Tại đây bạn có thể xem cách thực hiện: https://stackoverflow.com/a/8610916/1652236

Điều này phụ thuộc vào thông tin bổ sung mà bạn lấy trong phương thức 'onCreate()' của hoạt động mà bạn sẽ sử dụng để bắt đầu/tải đoạn.

Xem ở đây ví dụ như thế nào làm việc với mảnh: http://www.tutorialspoint.com/android/android_fragments.htm http://developer.android.com/guide/components/fragments.html

Nó Ý định để khởi động thủ tục này sẽ là một cái gì đó như:

Intent notificationIntent = new Intent(getActivity(), Abc.class); 
notificationIntent.putExtra("menuFragment", "favoritesMenuItem"); 

và trong hoạt động cơ sở của bạn:

@Override 
protected void onCreate(final Bundle savedInstanceState) 
{ 
    String menuFragment = getIntent().getStringExtra("menuFragment"); 

    FragmentManager fragmentManager = getFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

    // If menuFragment is defined, then this activity was launched with a fragment selection 
    if (menuFragment != null) { 

     // Here we can decide what do to -- perhaps load other parameters from the intent extras such as IDs, etc 
     if (menuFragment.equals("favoritesMenuItem")) { 
      FavoritesFragment favoritesFragment = new FavoritesFragment(); 
      fragmentTransaction.replace(android.R.id.content, favoritesFragment); 
     } 
    } else { 
     // Activity was not launched with a menuFragment selected -- continue as if this activity was opened from a launcher (for example) 
     StandardFragment standardFragment = new StandardFragment(); 
     fragmentTransaction.replace(android.R.id.content, standardFragment); 
    } 
} 
+0

Ở đây trong ứng dụng này tôi cần phải tạo thông điệp của riêng mình làm thông báo và tôi đã lưu ý rằng nút trong một trong các tùy chọn trình đơn trên thanh hành động, tôi chỉ sử dụng một hoạt động và phần còn lại tất cả là các mảnh –

+0

Như tôi đã hiểu bạn, bạn cần phải bắt đầu hoạt động cơ sở của bạn với một số mảnh. Và loại phân đoạn phải phụ thuộc vào loại thông báo. Có đúng không? – Vito

+0

Không phải tất cả các đoạn, chỉ một vài trang phân đoạn nên phụ thuộc vào loại thông báo –

2

bạn cũng nên thêm .commit();ft1.addToBackStack (null); sao cho nó sẽ không chồng chéo lên nhau trước và nếu bạn không quảng cáo số này ft1.addToBackStack (null); trên lưng ứng dụng của bạn sẽ thoát nên thêm này theo chức năng của mình

String menuFragment = getIntent().getStringExtra("menuFragment"); 

ft1 = getSupportFragmentManager().beginTransaction(); 

ft1.addToBackStack(null); 

ft1.replace(R.id.frame_container, favoritesFragment).commit(); 
4
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
      | Intent.FLAG_ACTIVITY_SINGLE_TOP) 

Như ý định của bạn thiết lập Flags: FLAG_ACTIVITY_SINGLE_TOP, "onCreate()" sẽ không được gọi khi hoạt động này đã được tạo ra, bạn nên nhận các tham số trong phương thức được gọi là "onNewIntent()" thay thế.

Các vấn đề liên quan