Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在不使用setContentView方法的情况下在“活动”中设置工具栏_Android_Android Toolbar_Android Appcompat - Fatal编程技术网

Android 如何在不使用setContentView方法的情况下在“活动”中设置工具栏

Android 如何在不使用setContentView方法的情况下在“活动”中设置工具栏,android,android-toolbar,android-appcompat,Android,Android Toolbar,Android Appcompat,我正在将我的应用程序移动到material design中,但我在其中一个活动中设置工具栏时遇到问题,因为它没有layout.xml 这就是活动 GeneralActivity.java package com.sample.app; import android.app.ActionBar; import android.app.Activity; import android.os.Bundle; import android.view.MenuItem; // This class i

我正在将我的应用程序移动到material design中,但我在其中一个活动中设置工具栏时遇到问题,因为它没有layout.xml

这就是活动

GeneralActivity.java

package com.sample.app;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;

// This class is for reusable purpose
// This class set some default configurations for all applications
// All activities in this Application except MainActivity extend this class
// so that the application can keep the same layout display
public class GeneralActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    // enable icon for up navigation
    ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // set home button as back button
    switch (item.getItemId()){
        case android.R.id.home:
            this.finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
}
这是我的材料设计应用程序style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="AppTheme" parent="Base.AppTheme">

</style>

<style name="Base.AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/md_green_500</item>
    <item name="colorPrimaryDark">@color/md_green_600</item>
    <item name="colorAccent">@color/md_pink_500</item>
    <item name="colorControlHighlight">@color/md_green_500_25</item>
    <item name="android:windowBackground">@color/md_white_1000</item>
</style>

<style name="ToolbarTheme" parent="AppTheme">
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@color/md_grey_300</item>

</style>

<style name="NavigationViewTheme" parent="AppTheme">
    <item name="textAppearanceListItem">@style/TextAppearance.AppCompat.Body2</item>
</style>

</resources>

@颜色/md_绿色_500
@颜色/md_绿色_600
@颜色/md_粉红色_500
@颜色/md_绿色_500_25
@颜色/md_白色_1000
@android:彩色/白色
@颜色/md\U灰色\U 300
@样式/文本外观.AppCompat.body 2

请帮助我,提前谢谢。

如果要将该活动用作基本活动,则需要覆盖SetContentView

@Override
public void setContentView(int layoutResID) {
    super.setContentView(layoutResID);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

如果要将该活动用作基本活动,则需要重写SetContentView

@Override
public void setContentView(int layoutResID) {
    super.setContentView(layoutResID);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

首先,对于没有布局的活动,您需要oncreateview方法,以便在调用此活动时显示一些内容。 还有一件事,manifest.xml中是否提到了您的活动?如果是,则默认情况下,它将获得此处提到的应用程序标记的操作栏。 如果没有,你可以在那里申报。
尝试一下…

首先,对于没有布局的活动,您需要oncreateview方法,以便在调用此活动时显示一些内容。 还有一件事,manifest.xml中是否提到了您的活动?如果是,则默认情况下,它将获得此处提到的应用程序标记的操作栏。 如果没有,你可以在那里申报。
尝试一下…

首先,您必须使用
AppCompatActivity
而不是
Activity

public class GeneralActivity extends AppCompatActivity{


}
然后你必须为你的活动设置不同的布局。您可以使用以下内容:

public class GeneralActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       // TODO Auto-generated method stub
       super.onCreate(savedInstanceState);

       setMyLayout();
   }   

   protected abstract void setMyLayout();

 }
在您的活动中,您可以实施以下方法:

   @Override
   protected abstract void setMyLayout(){
        setContentView(myLayout);

        //... if you need to get your Toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar);
        setSupportActionBar(toolbar);
        ...
   } 
如果布局没有工具栏,则必须更改主题:

<style name="AppTheme.Toolbar">
    <item name="colorPrimary">@color/mycolor</item>
    <item name="colorPrimaryDark">@color/...</item>
    <item name="colorAccent">@color/...</item>
</style>

@颜色/霉色
@颜色/。。。
@颜色/。。。

首先,您必须使用
AppCompatActivity
而不是
Activity

public class GeneralActivity extends AppCompatActivity{


}
然后你必须为你的活动设置不同的布局。您可以使用以下内容:

public class GeneralActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       // TODO Auto-generated method stub
       super.onCreate(savedInstanceState);

       setMyLayout();
   }   

   protected abstract void setMyLayout();

 }
在您的活动中,您可以实施以下方法:

   @Override
   protected abstract void setMyLayout(){
        setContentView(myLayout);

        //... if you need to get your Toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar);
        setSupportActionBar(toolbar);
        ...
   } 
如果布局没有工具栏,则必须更改主题:

<style name="AppTheme.Toolbar">
    <item name="colorPrimary">@color/mycolor</item>
    <item name="colorPrimaryDark">@color/...</item>
    <item name="colorAccent">@color/...</item>
</style>

@颜色/霉色
@颜色/。。。
@颜色/。。。


我也尝试过,但这里出现了错误/enable icon for up navigation ActionBar ActionBar=getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);对不起,我想我误解了你的问题,请看我的编辑answer@NikoYuwono我不认为它将工作的问题要求工具栏在活动中没有布局。您的答案希望提供布局
setContentView
,以便使工具栏处于活动状态。@NikoYuwono我稍后会尝试。因为现在我有课。谢谢你answer@VipulAsri阅读他的代码中的注释,此活动将作为基本活动,除MainActivity外的所有活动都将扩展GeneralActivity。我也尝试过,但我在此处遇到错误/enable icon for up navigation ActionBar ActionBar=getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);对不起,我想我误解了你的问题,请看我的编辑answer@NikoYuwono我不认为它将工作的问题要求工具栏在活动中没有布局。您的答案希望提供布局
setContentView
,以便使工具栏处于活动状态。@NikoYuwono我稍后会尝试。因为现在我有课。谢谢你answer@VipulAsri阅读他的代码中的注释,此活动将作为基本活动,除MainActivity外的所有活动都将扩展GeneralActivity。清单中未提及此活动。该活动充当其他活动的基本活动。示例:Activity1扩展了常规ActivityManifest中未提及该活动。该活动充当其他活动的基本活动。示例:活动1扩展了一般活动非常感谢您的回答。但是,先生,有没有其他方法使我不会更改styles.xml,因为我已经在应用程序中建立了该样式。顺便说一句,我正在试验的这个代码示例来到这里,您不必更改样式。如果您想添加工具栏而不使用布局文件,则只需使用这些属性。先生,我已经尝试过您的解决方案,但不起作用:(如果我调用此活动的样式,尤其是此样式,那么如何:这样我就可以将操作栏帖子中的代码更改为:ActionBar ActionBar=getSupportActionBar();ActionBar.setDisplayHomeAsUpEnabled(true);…是否可以为一个活动设置不同的样式?但是,如果GeneralActivity不会在清单中调用,以便可以应用主题或样式,那么是否可以通过编程方式应用主题/样式?非常感谢您的回答。但是,先生,有没有其他方法使我不会更改styles.xml,因为我已经在应用程序中建立了该样式。顺便说一句,我正在试验的这个代码示例出现在这里。你不必更改样式。如果你想添加工具栏而不使用布局文件,你只需使用这些属性。先生,我已经试过你的解决方案,但它不起作用(如果我调用此活动的样式,尤其是此样式,那么如何:这样我就可以将操作栏帖子中的代码更改为:ActionBar ActionBar=getSupportActionBar();ActionBar.setDisplayHomeAsUpEnabled(true);…是否可以为活动设置不同的样式?但是如果在清单中不调用GeneralActivity以便可以应用主题或样式,那么可以通过编程方式应用主题/样式吗?