2016-07-18 5 views
0

В моем приложении я бы сделал уникальную панель инструментов для всех видов деятельности, кроме mainActivity. Я написал этот код для набора Название и логотип, но в панели инструментов у меня также есть имя пользователя, которое только что занесено в журнал. Так I'have записи в моей панели деятельности этот код:Установить панель инструментов для всех Деятельности

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

И я сделал макет, который можно включать в файл XML все. Но как я могу повторно использовать этот код во всех моих действиях без копирования и вставки?

Неправильно сделать одноэлементный? или класс полезности?

благодаря

ответ

3

Вы можете создать базовую активность, которая запускает общий код и все другие виды деятельности наследуют от него:

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

Спасибо !! фантастика! это работает! – LorenzoBerti

1

держать свой код в одном CustomActivity.

Где все необходимое в вашем приложении расширяет CustomActivity.

Пример:

CustomActivity extends Activity{ 
// your toolbar code 
} 

В ваших всех видов деятельности распространяется CustomActivity.

0

Вы можете сделать так:

class BaseActivity extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);   
    } 

    public void initToolbar(int toolbarId) 
    { 
     Toolbar myToolbar = (Toolbar) findViewById(toolbarId); 
     setSupportActionBar(myToolbar); 
     getSupportActionBar().setDisplayShowTitleEnabled(false); 
     assert myToolbar != null; 
     myToolbar.setLogo(R.mipmap.logo_big); 
    } 
} 

class YourActivity extends BaseActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(your activity layout); 

      initToolbar(R.id.yourToolbarId); 
    } 
} 
Смежные вопросы