如何从工具栏中的片段活动设置图像和文本android

问题描述:

我需要在navigationDrawer活动的工具栏的右侧设置一个imageView和Textview。但问题是imageview和textviews的值是不同的片段活动。此外,我还需要使工具栏变得透明。我正在使用默认导航抽屉活动。任何人都可以帮忙吗?任何帮助将不胜感激。如何从工具栏中的片段活动设置图像和文本android

app_bar_main.xml文件

<? xml version = "1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.unitybees.photo.MainActivity"> 
    <android.support.design.widget.AppBarLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:theme="@style/AppTheme.AppBarOverlay" 
      android:background="@null"> 
     <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:popupTheme="@style/AppTheme.PopupOverlay"> 
      <LinearLayout 
       android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:orientation="horizontal"> 
       <ImageView android:id="@+id/right_icon" 
         android:layout_gravity="right" 
         android:layout_width="40dp" 
         android:layout_height="40dp"/> 
       <TextView android:id="@+id/right_text" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="right" 
         android:textColor="#000000"/> 
      </LinearLayout> 
     </android.support.v7.widget.Toolbar> 
    </android.support.design.widget.AppBarLayout> 
    <include layout="@layout/content_main"/> 
</android.support.design.widget.CoordinatorLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity implements 
     NavigationView.OnNavigationItemSelectedListener { 
    public static final int right_image = 1; 
    public static final int right_texts = 2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     TextView t = (TextView) findViewById(R.id.right_text); 
     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); 
     this.setTitle(""); 
    } 

    @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) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     displaySelectedScreen(item.getItemId()); 
     return true; 
    } 

    private void displaySelectedScreen(int itemId) { 
     android.support.v4.app.Fragment fragment = null; 
     switch (itemId) { 
      case R.id.nav_menu1: 
       fragment = new Book_now(); 
       break; 
      case R.id.nav_menu2: 
       fragment = new Payment(); 
       break; 
      case R.id.nav_menu3: 
       fragment = new Account(); 
       break; 
     } 
     if (fragment != null) { 
      FragmentTransactionft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.content_frame, fragment); 
      ft.commit(); 
     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
    } 
} 

我Account.java

public class Account extends android.support.v4.app.Fragment { 
    TextView txt; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.account, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     getActivity().setTitle(""); 
    } 
} 
+1

你有什么迄今所做实现这一目标在你的活动

public void initToolBar(String title) { toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(title); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.mipmap.ic_launcher_round); toolbar.setNavigationOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "clicking the toolbar!", Toast.LENGTH_SHORT).show(); } } ); } 

2)要更新您的通话片段的方法将这个方法? – warl0ck

+0

先生,我编辑了我的问题。请看看 – Anu

+0

类似的问题https://stackoverflow.com/questions/12739909/send-data-from-activity-to-fragment-in-android看看这是否有助于 – warl0ck

您好试试这个,如果它可以帮助

1)使用mehtod

((MainActivity) getActivity()).initToolBar("Fragment Title"); 
+0

谢谢。我会查一下。 – Anu

+0

是的,试试吧,告诉你是否需要更多的帮助 –

+0

它的作品:)。我还有一个qstn,我如何设置图像大小。而且我还需要在工具栏的右侧添加图像和文本。我需要从工具栏右侧删除3个点。你能帮我吗? – Anu