So Einstellung ich jetzt etwa eine Woche lang mit diesem Thema zu kämpfen haben ...Ich habe Probleme mit Titeln in Symbolleiste Fragmente in tabLayoyt (Android)
Die Sache ist, dass im eine Menge Probleme, um den Titel in der Symbolleiste zu setzen, abhängig davon, welcher Tab aktiv ist?
ich meine mainActivity haben, in dem ich eine TabLayout und Viewpager haben, die 3 verschiedene Fragmente (Tabs)
Hier ist mein MainActivy aufbläst:
package stefankorfitz.slidingtabdemo.Activities;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import at.markushi.ui.CircleButton;
import stefankorfitz.slidingtabdemo.Adapters.TabFragmentAdapter;
import stefankorfitz.slidingtabdemo.R;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
TabLayout tabLayout;
ViewPager viewPager;
public EditText editTextSearchTitle;
public String searchTitle;
private static final int REQUEST_CODE = 1234;
final Context context = this;
private static final String LOG_TAG_REFRESH = MainActivity.class.getSimpleName();
private static final String LOG_TAG_CAST = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(new TabFragmentAdapter(getSupportFragmentManager(), getApplicationContext()));
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
tab.getIcon().setColorFilter(Color.parseColor("#ffc800"), PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
tab.getIcon().setColorFilter(Color.parseColor("#d2d4d2"), PorterDuff.Mode.SRC_IN);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
//tab.getIcon().setColorFilter(Color.parseColor("#d2d4d2"), PorterDuff.Mode.SRC_IN);
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launches the Search DialogFragment
final Dialog dialog = new Dialog(context);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.fragment_search);
editTextSearchTitle = (EditText) dialog.findViewById(R.id.editTextSearchTitle);
// Performs the search
Button dialogBtnSearch = (Button) dialog.findViewById(R.id.searchBtnOk);
dialogBtnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
// Closes the Dialog
Button dialogBtnCancel = (Button) dialog.findViewById(R.id.searchBtnCancel);
dialogBtnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
// Handles Voice Search
CircleButton speakButton = (CircleButton) dialog.findViewById(R.id.searchBtnSpeak);
speakButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startVoiceRecognition();
}
});
dialog.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);
}
private void setupTabIcons() {
//tabLayout.getTabAt(0).setIcon(tabIcons[0]);
//tabLayout.getTabAt(1).setIcon(tabIcons[1]);
//tabLayout.getTabAt(2).setIcon(tabIcons[2]);
TabLayout.Tab tab1 = tabLayout.getTabAt(0);
tab1.setIcon(R.color.tab1_selector);
tab1.getIcon().setColorFilter(Color.parseColor("#ffc800"), PorterDuff.Mode.SRC_IN);
TabLayout.Tab tab2 = tabLayout.getTabAt(1);
tab2.setIcon(R.color.tab2_selector);
tab2.getIcon().setColorFilter(Color.parseColor("#d2d4d2"), PorterDuff.Mode.SRC_IN);
TabLayout.Tab tab3 = tabLayout.getTabAt(2);
tab3.setIcon(R.color.tab3_selector);
tab3.getIcon().setColorFilter(Color.parseColor("#d2d4d2"), PorterDuff.Mode.SRC_IN);
}
private void startVoiceRecognition() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
//since you only want one, only request 1
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
startActivityForResult(intent, REQUEST_CODE);
//startActivityForResult(intent, 1234);
}
@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) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_main) {
switch (item.getItemId()) {
case R.id.nav_main:
Intent intent = new Intent(this, MainActivity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
} else if (id == R.id.nav_tab1) {
switch (item.getItemId()) {
case R.id.nav_tab1:
Intent intent = new Intent(this, Tab1Activity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
} else if (id == R.id.nav_tab2) {
switch (item.getItemId()) {
case R.id.nav_tab2:
Intent intent = new Intent(this, Tab2Activity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
} else if (id == R.id.nav_tab3) {
switch (item.getItemId()) {
case R.id.nav_tab3:
Intent intent = new Intent(this, Tab3Activity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
} else if (id == R.id.nav_share) {
} else if (id == R.id.nav_send) {
} else if (id == R.id.nav_settings) {
switch (item.getItemId()) {
case R.id.nav_settings:
Intent intent = new Intent(this, SettingsActivity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
} else if (id == R.id.nav_help) {
switch (item.getItemId()) {
case R.id.nav_help:
Intent intent = new Intent(this, HelpActivity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
} else if (id == R.id.nav_about) {
switch (item.getItemId()) {
case R.id.nav_about:
Intent intent = new Intent(this, AboutActivity.class);
this.startActivity(intent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
Und hier ist mein FragmentAdapter:
package stefankorfitz.slidingtabdemo.Adapters;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import stefankorfitz.slidingtabdemo.Fragments.Tabs.Tab1;
import stefankorfitz.slidingtabdemo.Fragments.Tabs.Tab2;
import stefankorfitz.slidingtabdemo.Fragments.Tabs.Tab3;
/**
* Created by Stefan on 24-07-2016.
*/
public class TabFragmentAdapter extends FragmentPagerAdapter {
Context context;
public TabFragmentAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
super(supportFragmentManager);
context = applicationContext;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Tab1();
case 1:
return new Tab2();
case 2:
return new Tab3();
// In order to add extra tab's, just add extra case here
}
return null;
}
@Override
public int getCount() {
// NOTICE!! Specify the number of above case's here, in order to show ALL tabs
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
//If you want title's on the tabs, then just remove the outcommenting
/*
// Setting the titles on tabs
switch (position) {
case 0:
return context.getString(R.string.tab_title_tab1);
case 1:
return context.getString(R.string.tab_title_tab2);
case 2:
return context.getString(R.string.tab_title_tab3);
}
*/
return null;
}
}
Und man das Fragment (die 3 von ihnen sind gleich !!)
package stefankorfitz.slidingtabdemo.Fragments.Tabs;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import stefankorfitz.slidingtabdemo.R;
/**
* Created by Stefan on 24-07-2016.
*/
public class Tab1 extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
View view;
TextView action_bar_title;
android.support.v7.app.ActionBar actionBar;
SwipeRefreshLayout mySwipeRefreshLayout;
private static final String LOG_TAG = Tab1.class.getSimpleName();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//android.app.ActionBar actionbar = getActivity().getActionBar();
//actionbar.setTitle(getResources().getString(R.string.tab_title_tab1));
view = inflater.inflate(R.layout.fragment_tab1,
container, false);
//int titleId = getResources().getIdentifier("action_bar_title", "id", "android");
//action_bar_title = (TextView) action_bar_title.findViewById(R.id.action_bar_title);
//action_bar_title.setText(R.string.title_guide_1_xx);
mySwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefresh);
mySwipeRefreshLayout.setOnRefreshListener(this);
mySwipeRefreshLayout.setColorSchemeResources(R.color.green, R.color.orange, R.color.red);
return view;
}
@Override
public void onRefresh() {
Log.i(LOG_TAG, "Refresh swipe started...");
Toast.makeText(getActivity(), R.string.toast_refreshing_content, Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override public void run() {
// Updates the content of Tab1 using SwipeRefresh
// TODO : Implement code here
// Turns OFF the Refresh-Ring
mySwipeRefreshLayout.setRefreshing(false);
}
}, 1000);
Log.i(LOG_TAG, "Refresh swipe finished!");
}
}
Hinweis! Die Hauptherausforderung, die ich habe, ist, dass alle Lösungen, die ich bisher versucht habe, nur den gleichen Titel in Tab1 + Tab2 setzt ... Und wenn ich dann den ganzen Tab3 überstreiche, setzt er den richtigen Titel für Tab3, aber es bleibt dort, wenn ich zurück zu Tab2 wische und dann, wenn ich den ganzen Weg zurück zu Tab1 komme, zeigt es dann den Titel von Tab2?
ICH WÜRDE SO SO GLÜCKLICH SEIN, WENN JEMAND MICH HIER helfen könnte ...
Bei Code aus dem Beispiel fehlt etwas Licht des Problems zu werfen? Dann pls lassen Sie mich wissen, und ich werde einige weitere Beispiele laden :-)
Sie Kerls Vielen Dank im Voraus ...
Wo setzen Sie den Titel? – Chol
Der Titel kommt von strings.xml res! ... –