2017-07-10 50 views
0

我想如下以编程方式创建一个DrawerLayout的动作条:如何在Java中创建一个动作条/工具栏

import android.support.v7.widget.Toolbar; 

public class RevToolBar extends MainActivity { 

    public Toolbar getRevToolbar() { 
     Toolbar revToolBar = new Toolbar(this); 
     setSupportActionBar(revToolBar); 

     return revToolBar; 
    } 
} 

然后在主要活动:

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

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

     Toolbar toolbar = new RevToolBar().getRevToolbar(); 

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

然而,应用始终刚刚开始后崩溃:

应用已再次停止
打开的应用程序

什么是在Java中创建和添加一个ActionBar /工具栏到DrawerLayout的正确方法?

谢谢大家提前。

UPDATE

抛出的输出:

07/10 14:16:22: Launching app 
$ adb install-multiple -r -p com.example.rev.myapp /media/rev/5431214957EBF5D7/projects/android/myapp/app/build/intermediates/split-apk/debug/slices/slice_0.apk 
Split APKs installed 
$ adb shell am start -n "com.example.rev.myapp/com.example.rev.myapp.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 
Client not ready yet..Waiting for process to come online 
Connected to process 9754 on device Nexus_5X_Edited_API_25 [emulator-5554] 
Application terminated. 
+0

把你的堆栈跟踪这里 –

+0

谢谢你的回复@LuizFernandoSalvaterra。我只是做了一个更新,并包含了这一点。 –

+0

为什么不在布局文件中使用工具栏? – Cochi

回答

1

试试这个

public class RevToolBar 
{ 
Context mContext; 
public RevToolBar(Context context){ 
    mContext = context; 
    } 
public Toolbar getRevToolbar() { 
    Toolbar toolbar = new Toolbar(mContext); 
    LinearLayout.LayoutParams toolBarParams = new LinearLayout.LayoutParams(
      Toolbar.LayoutParams.MATCH_PARENT, 
      150 
    ); 
    toolbar.setLayoutParams(toolBarParams); 
    toolbar.setBackgroundColor(Color.BLUE); 
    toolbar.setVisibility(View.VISIBLE); 
    return toolbar; 
    } 
} 

和MainActivity

RevToolBar revToolBar = new RevToolBar(MainActivity.this); 
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
drawer .addView(revToolBar.getRevToolbar(), 0); 
相关问题