-2

我已创建活动NotificationActivity,并且我想在点击导航抽屉的item_alarm菜单后打开它。我已经这样做了,但它不起作用。关于导航抽屉项目的打开活动(而不是片段)单击

主要活动

@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt(SELECTED_TAG, selectedIndex); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 


     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public boolean onNavigationItemSelected(MenuItem menuItem) { 
     int id = menuItem.getItemId(); 


     if (id == R.id.sunday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new SundayFragment()).commit(); 

     } 


     else if (id == R.id.monday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new MondayFragment()).commit(); 

     } 

     else if (id == R.id.tuesday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new TuesdayFragment()).commit(); 

     } 

     else if (id == R.id.wednesday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new WednesdayFragment()).commit(); 

     } 

     else if (id == R.id.thursday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new ThursdayFragment()).commit(); 

     } 

     else if (id == R.id.friday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new FridayFragment()).commit(); 

     } 

     else if (id == R.id.saturday){ 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new SaturdayFragment()).commit(); 

     } 

     else if(id == R.id.item_about) { 

      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new AboutFragment()).commit(); 
     } 

     else if(id == R.id.item_alarm) { 

      Intent i = new Intent(MainActivity.this, NotificationActivity.class); 
      startActivity(i); 

     } 

     else if(id == R.id.item_course) { 

      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.fragment_container, new CourseFragment()).commit(); 
     } 


     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 


     } 

而且NotificationActivity是:

public class NotificationActivity extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     Intent repeating_intent = new Intent(context,Repeating_activity.class); 
     repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     PendingIntent pendingIntent = PendingIntent.getActivity(context,100,repeating_intent,PendingIntent.FLAG_UPDATE_CURRENT); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
       .setContentIntent(pendingIntent) 
       .setSmallIcon(android.R.drawable.arrow_up_float) 
       .setContentTitle("Title") 
       .setContentText("Content") 
       .setAutoCancel(true); 
     notificationManager.notify(100,builder.build()); 





    } 
} 
+1

把你所有的方法放在这里 –

+0

@LuizFernandoSalva terra我编辑了这个问题 –

+0

这不是一个Activity,是一个BroadcastReceiver,你不能手动启动BroadcastReceiver。 –

回答

0

如果你想打开菜单项点击里面的Activity,你必须改变你的类是Activity

public class NotificationActivity extends AppCompatActivity implements View.OnclickListener { 

    //Create a button instance 
    private Button btn; 

    @Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_layout_here); 
    btn = (Button)findViewById(R.id.btn); //you have to put a button on your layout your_layour.xml 
    btn.setOnClickListener(this); 
    } 


    //when your button is pressed, this method will be triggered. 
     @Override 
    public void onClick(View view){ 
     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     Intent repeating_intent = new Intent(context,Repeating_activity.class); 
     repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     PendingIntent pendingIntent = PendingIntent.getActivity(context,100,repeating_intent,PendingIntent.FLAG_UPDATE_CURRENT); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
       .setContentIntent(pendingIntent) 
       .setSmallIcon(android.R.drawable.arrow_up_float) 
       .setContentTitle("Title") 
       .setContentText("Content") 
       .setAutoCancel(true); 
     notificationManager.notify(100,builder.build()); 

    } 
} 
+0

让我说清楚。我想打开一个活动菜单项点击并显示通知,当它里面的按钮被按下。 –

+0

我编辑我的答案 –