2017-07-17 3 views
0

J'ai du mal à faire en sorte que les éléments du tiroir de navigation s'inscrivent et démarrent et qu'ils soient destinés à une nouvelle activité. Le tiroir s'ouvre correctement et s'affiche correctement mais rien ne se passe lorsque je clique sur les éléments de la liste. Voici mon codeJe ne peux pas cliquer sur le tiroir de navigation

package radiofm.arabel; 

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.util.Log; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Button; 
import android.widget.ImageButton; 

import static android.widget.AbsListView.OnScrollListener.SCROLL_STATE_IDLE; 

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    ImageButton id_play,id_pause; 

    private Button btn; 
    private boolean playPause; 
    private MediaPlayer mediaPlayer; 
    private ProgressDialog progressDialog; 
    private boolean initialStage = true; 


    FragmentTransaction fragmentTransaction; 
    NavigationView navigationView; 






    private DrawerLayout mDrawerLayout; 
    private ActionBarDrawerToggle mToggle; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     Log.d("myTag", "This is my toolbar"); 


     id_play = (ImageButton) findViewById(R.id.id_play); 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     progressDialog = new ProgressDialog(this); 
     id_play.setEnabled(true); 
     id_play.setImageResource(R.drawable.play); 
     id_play.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (!playPause) { 
        id_play.setImageResource(R.drawable.pause); 

        if (initialStage) { 
         Log.d("myTag", "This is my excute"); 
         new Player().execute("http://arabelfm.ice.infomaniak.ch/arabelprodcastfm.mp3"); 
        } else { 
         Log.d("myTag", "This is my beforestart"); 

         if (!mediaPlayer.isPlaying()) 
          Log.d("myTag", "This is my afterstart"); 

         mediaPlayer.start(); 
        } 

        playPause = true; 

       } else { 
        id_play.setImageResource(R.drawable.play); 
        Log.d("myTag", "This is my beforestop"); 

        if (mediaPlayer.isPlaying()) { 
         Log.d("myTag", "This is afterstop"); 

         mediaPlayer.reset(); 

        } 

        playPause = false; 
       } 
      } 
     }); 




     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 

     if (mediaPlayer != null) { 
      mediaPlayer.reset(); 
      mediaPlayer.release(); 
      mediaPlayer = null; 
     } 
    } 



    class Player extends AsyncTask<String, Void, Boolean> { 
     @Override 
     protected Boolean doInBackground(String... strings) { 
      Boolean prepared = false; 

      try { 
       mediaPlayer.setDataSource(strings[0]); 
       mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mediaPlayer) { 
         Log.d("myTag", "This is my listnner"); 
         initialStage = true; 
         playPause = false; 
         id_play.setImageResource(R.drawable.play); 
         mediaPlayer.stop(); 
         mediaPlayer.reset(); 
        } 
       }); 

       mediaPlayer.prepare(); 
       prepared = true; 

      } catch (Exception e) { 
//    Log.e("MyAudioStreamingApp", e.getMessage()); 
       prepared = false; 
      } 

      return prepared; 
     } 

     @Override 
     protected void onPostExecute(Boolean aBoolean) { 
      super.onPostExecute(aBoolean); 

      if (progressDialog.isShowing()) { 
       progressDialog.cancel(); 
      } 

      mediaPlayer.start(); 
      initialStage = true; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      progressDialog.setMessage("Buffering..."); 
      //progressDialog.show(); 
     } 
    } 



    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 


    private void displaySelectedScreen(int id) 
    { 
     Fragment fragment=null; 
     Log.d("myTag", "This is my displ"); 

     switch (id){ 
      case R.id.nav_alarm: 
       fragment = new Add_Alarm(); 
       break; 

     } 

     if (fragment !=null) 
     { 
      FragmentTransaction ft =getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.content_main,fragment); 
      ft.commit(); 

     } 


    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     Fragment fragment = null; 




     if (id == R.id.nav_alarm) { 

      Intent goToNextActivity = new Intent(getApplicationContext(), Main2Activity.class); 
      startActivity(goToNextActivity); 
     } 
     FragmentTransaction ft =getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.content_main,fragment); 
     ft.addToBackStack(null); 
     ft.commit(); 

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


} 
+0

On dirait que vous ne faites rien avec votre clic de l'élément de menu dans votre méthode' onOptionsItemSelected() '.. – SripadRaj

Répondre

0

essayez de changer votre code à l'intérieur onNavigationItemSelected à ceci:

switch (item.getItemId()){ 
         case R.id.nav_alarm: 
          //do stuff 
          Intent goToNextActivity = new Intent(getApplicationContext(), Main2Activity.class); 
          startActivity(goToNextActivity); 
         break; 
      } 
      FragmentTransaction ft =getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.content_main,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 

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

Vous devriez vérifier votre onNavigationItemSelected (point MenuItem) méthode, car tout en remplaçant le fragment que vous vous initailized fragment null comme Fragment fragment = null;. Donc, pour remplacer le fragment, vous devez prendre le fragment réel au lieu de null fragmnet. Vous pouvez passer par de la fragments here.

`

0
Change the flow of the code as below: 

    @Override 
    public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
     item.setCheckable(false); 
     Fragment fragment=null; 
     switch (item.getItemId()) { 
       case R.id.navigation_home: 
       fragment = new HomeFragment(); 
       break 
     } 
     loadHomeFragment(fragment); 
     mDrawerLayout.closeDrawer(GravityCompat.START); 
     return true; 
    } 

     private void loadHomeFragment(Fragment fragment) { 
       FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.setCustomAnimations(android.R.anim.fade_in, 
       android.R.anim.fade_out); 
     fragmentTransaction.replace(R.id.frame, fragment); 
     fragmentTransaction.commitAllowingStateLoss(); 
    }