0

Мне нравится делать приложение с вкладками. В моем приложении есть три вкладки с несколькими кнопками на каждой вкладке. И есть три фрагмента. Мне нравится отображать некоторый текст в обычный TextView, когда нажаты кнопки на каждой вкладке. Мои вкладки работают нормально. Но у меня есть три вопроса. 1.Как дать общий TextView для всех вкладок (возможно, за пределами вкладок) метод кнопки 2.My во фрагментах не работает 3.Когда я пытаюсь отобразить шрифты языка cutom, это дает мне ошибку «Метод getAssets() не определено для типа Fragmenta»Как добавить TextView вне вкладок панели действий

ниже моя основная деятельность

public class MLkeyboardActivity extends Activity { 
/** Called when the activity is first created. */ 
//public static TextView textView1; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mlkeyboard); 


    final ActionBar actionBar = getActionBar();   
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 




    Tab tabA = actionBar.newTab(); 
    tabA.setText("Tab A"); 
    tabA.setTabListener(new TabListener<FragmentA>(this, "Tag A", FragmentA.class)); 
    tabA.setIcon(R.drawable.ic_launcher); 
    actionBar.addTab(tabA); 

    Tab tabB = actionBar.newTab(); 
    tabB.setText("Tab B"); 
    tabB.setTabListener(new TabListener<FragmentB>(this, "Tag B", FragmentB.class)); 
    actionBar.addTab(tabB); 

    Tab tabC = actionBar.newTab(); 
    tabC.setText("Tab C"); 
    tabC.setTabListener(new TabListener<FragmentC>(this, "Tag C", FragmentC.class)); 
    actionBar.addTab(tabC); 

    if (savedInstanceState != null) { 
     int savedIndex = savedInstanceState.getInt("SAVED_INDEX"); 
     getActionBar().setSelectedNavigationItem(savedIndex); 
    } 

} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    // TODO Auto-generated method stub 
    super.onSaveInstanceState(outState); 
    outState.putInt("SAVED_INDEX", getActionBar().getSelectedNavigationIndex()); 
} 

public static class TabListener<T extends Fragment> 
    implements ActionBar.TabListener{ 

    private final Activity myActivity; 
    private final String myTag; 
    private final Class<T> myClass; 

    public TabListener(Activity activity, String tag, Class<T> cls) { 
     myActivity = activity; 
     myTag = tag; 
     myClass = cls; 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 

     Fragment myFragment = myActivity.getFragmentManager().findFragmentByTag(myTag); 

     // Check if the fragment is already initialized 
     if (myFragment == null) { 
      // If not, instantiate and add it to the activity 
      myFragment = Fragment.instantiate(myActivity, myClass.getName()); 
      ft.add(android.R.id.content, myFragment, myTag); 
     } else { 
      // If it exists, simply attach it in order to show it 
      ft.attach(myFragment); 
     } 

    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 

     Fragment myFragment = myActivity.getFragmentManager().findFragmentByTag(myTag); 

     if (myFragment != null) { 
      // Detach the fragment, because another one is being attached 
      ft.detach(myFragment); 
     } 

    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

}} 

и это мой код в одном из фрагментов

public class FragmentA extends Fragment { 
public static TextView textView1; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View myFragmentView = inflater.inflate(R.layout.fragment_a, container, false); 
    return myFragmentView;  
} 
public void button1(View view) { 
    TextView tv = (TextView) getActivity().findViewById(R.id.textView1); 
    Typeface typeFace = Typeface.createFromAsset(getAssets(),"fonts/AnjaliOldLipi.ttf"); 
    tv.setTypeface(typeFace); 
    tv.setText("അ");    

}} 

Я буду чрезвычайно чем kful для вас за любую помощь.

+0

Почему кто-то проголосовал за мой вопрос? Разве информация не была понятна? Мне действительно нужна помощь. Пожалуйста, – user1995307

+0

Спасибо за все взлеты. Хотя я не получил никаких ответов. – user1995307

ответ

0

Наконец-то я получил решение. Мы можем предоставить общий TextView в основном XML-файле следующим образом.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

<TextView 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="TextView" />  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 
</LinearLayout> 
</LinearLayout> 

Теперь кнопка не требуется для вызова ba из фрагмента. Он может быть вызван непосредственно из Основной Acivity, предоставив метод FindVuewById. Название кнопки должно быть различным в Tab1.XMl, Tab2.xml и т.д. код выглядит следующим образом,

public void butn1(View view) { 
    TextView tv = (TextView) findViewById(R.id.textView1);  
    tv.setText("abc"); 

} 

метод butn1 соответствует Button1 в Tab1, similerly мы можем дать для других кнопок в других вкладках.

Смежные вопросы