为所有活动设置工具栏

Lor*_*rti 1 android android-toolbar

在我的应用程序中,我将为除mainActivity之外的所有活动创建一个Unique工具栏.我已经为set Title和logo编写了这段代码,但在工具栏中我还有用户名用户刚登录.所以我在我的仪表板活动中写了这段代码:

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(myToolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    assert myToolbar != null;
    myToolbar.setLogo(R.mipmap.logo_big);

TextView usernameField = (TextView) findViewById(R.id.username);
    try {
        usernameField.setText(User.getInstance().getUsername());
    } catch (JSONException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我制作了一个可以包含在所有xml文件中的布局.但是如何在没有复制和粘贴的情况下在所有活动中重用此代码?

单身人士错了吗?还是实用班?

谢谢

Ric*_*ard 12

您可以创建一个运行公共代码的基本活动,并从中继承所有其他活动:

// the base class
public abstract class BaseActivity extends AppCompatActivity
{
    protected final void onCreate(Bundle savedInstanceState, int layoutId)
    {
        super.onCreate(savedInstanceState);
        setContentView(layoutId);

        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        assert myToolbar != null;
        myToolbar.setLogo(R.mipmap.logo_big);

        TextView usernameField = (TextView) findViewById(R.id.username);
        try {
            usernameField.setText(User.getInstance().getUsername());
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

// inheriting activity
public class SomeActivity extends BaseActivity
{
    protected final void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState, R.layout.some_layout);
    }
}
Run Code Online (Sandbox Code Playgroud)