2017-03-04 32 views
-1

我想在導航抽屜菜單的Android項目中包含隨機數的生成。對於後者,我一直在遵循一個完美工作的YouTube教程(Android Development Tutorials#12 - 生成一個隨機數字),但只能在基本的Android Studio項目中使用。作爲一個java新手,當試圖將相同的Java代碼包含到MainActivity.java中時,它已經包含了導航抽屜菜單的代碼。我假設我插入數字生成的相應示例代碼(代碼段中的第114到126行)必須是錯誤的,我一直在嘗試不同的方法。但我總是得到錯誤:無法訪問的聲明(在行114)。 Thx提前提供任何幫助!在Android導航抽屜中正確放置活動代碼

package... 
 

 
import android.app.FragmentManager; 
 
import android.os.Bundle; 
 
import android.support.design.widget.FloatingActionButton; 
 
import android.support.design.widget.Snackbar; 
 
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.TextView; 
 

 

 
public class MainActivity extends AppCompatActivity 
 
     implements NavigationView.OnNavigationItemSelectedListener { 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
 
     setSupportActionBar(toolbar); 
 

 
     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
 
     fab.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View view) { 
 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
 
         .setAction("Action", null).show(); 
 
      } 
 
     }); 
 

 
     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 
 
    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); 
 
    } 
 

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

 
     if (id == R.id.nav_first_layer) { 
 
      fragmentManager.beginTransaction() 
 
        .replace(R.id.content_frame 
 
          , new FirstFragment()) 
 
        .commit(); 
 
     } else if (id == R.id.nav_second_layer) { 
 
      fragmentManager.beginTransaction() 
 
        .replace(R.id.content_frame 
 
          , new SecondFragment()) 
 
        .commit(); 
 
     } else if (id == R.id.nav_third_layer) { 
 
      fragmentManager.beginTransaction() 
 
        .replace(R.id.content_frame 
 
          , new ThirdFragment()) 
 
        .commit(); 
 
     } else if (id == R.id.nav_share) { 
 

 
     } else if (id == R.id.nav_send) { 
 

 
     } 
 

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

 
     final TextView textOne = (TextView) findViewById(R.id.rndsampletext); 
 

 
     Button pushMe = (Button) findViewById(R.id.rndsamplebutton); 
 

 
     final String [] txtOptions = {"One", "Two", "Three"}; 
 

 
     pushMe.setOnClickListener(new View.OnClickListener(){ 
 
      @Override 
 
      public void onClick(View v) { 
 
       int rando = (int) (Math.random() * 3); 
 
       textOne.setText(txtOptions[rando]); 
 
      }; 
 
     }); 
 

 
    } 
 

 

 
}

+0

你也許可以採取一些靈感來源於[這裏](https://github.com/Zhuinden/simple-stack/blob/master/simple-stack-example-mvp/src /main/java/com/zhuinden/simplestackdemoexamplemvp/application/MainView.java) – EpicPandaForce

回答

0

你在begining返回true:

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

應該是後ü生成隨機數:

我建議ü的代碼添加到您的onCreate()方法activity

像:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    //move this here 
    final TextView textOne = (TextView) findViewById(R.id.rndsampletext); 

    Button pushMe = (Button) findViewById(R.id.rndsamplebutton); 

    final String [] txtOptions = {"One", "Two", "Three"}; 

    pushMe.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      int rando = (int) (Math.random() * 3); 
      textOne.setText(txtOptions[rando]); 
     }; 
    }); 

    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); 
} 
+0

@ trav6歡迎使用堆棧溢出...如果答案通過單擊答案旁邊的刻度線來標記它正確無誤.thankx – rafsanahmad007

+0

Thx you非常感謝您的幫助,事實上,rafsanahmad007!我做了你所建議的事情(即移動返回爲真),最初的問題消失了。但是,在模擬器中啓動應用程序時,它會完美啓動,但是當單擊抽屜菜單中的「第一層」時,應用程序會停止...不知道可能是什麼問題。我試圖從114-126行刪除代碼,它都像魅力一樣工作。任何想法?您也建議將代碼添加到onCreate()中來代替。你是怎麼意思的? – trav6

+0

我已經編輯了含義的答案...希望它有幫助 – rafsanahmad007