2017-07-17 53 views
0

我正在努力让导航抽屉项目注册并开始并意图进行新的活动。抽屉打开正常,并显示正确,但没有反应,当我点击列表中的项目。这里是我的代码我无法点击我的导航抽屉

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

它看起来像你不与你的菜单项,点击在'onOptionsItemSelected()'方法做任何事情.. – SripadRaj

回答

0

尝试改变内部代码onNavigationItemSelected这样:

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

您应该检查onNavigationItemSelected(菜单项项)方法,因为在更换片段你initailized你片段null如片段fragment = null;。因此,为了替换片段,您需要使用实际片段而不是null fragmnet。 你可能会经历有关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(); 
    }