0

탭으로 응용 프로그램을 만들고 싶습니다. 내 애플리케이션에는 각 탭에 몇 개의 버튼이있는 3 개의 탭이 있습니다. 그리고 세 조각이 있습니다. 각 탭의 버튼을 누르면 일반 TextView에 텍스트를 표시하고 싶습니다. 내 탭이 정상적으로 작동합니다. 하지만 세 가지 문제가 있습니다. 1. 모든 탭 (아마도 탭 바깥 쪽)에 대한 일반 TextView를 제공하는 방법 2. 내 버튼 메서드가 작동하지 않습니다. 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("അ");    

}} 

나는 매우보다 것 중 하나 내 코드입니다 어떤 도움이 필요해.

+0

왜 누군가 내 질문에 투표를 했습니까? 정보가 명확하지 않았습니까? 정말 도움이 필요해. – user1995307

+0

모든 투표 업에 감사드립니다. 나는 아무 대답도 얻지 못했지만. – user1995307

답변

0

마지막으로 해결책을 얻었습니다. 다음과 같이 Main XML 파일에 공통 TextView를 제공 할 수 있습니다.

<?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> 

이제 단편에서 호출 된 버튼은 필요하지 않습니다. FindVuewById 메서드를 제공하여 MainAccivity에서 직접 호출 할 수 있습니다. 버튼 이름은

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

} 

방법 butn1는 TAB1에 Button1을에 해당 다음의 코드는, Tab2.xml 등 Tab1.XMl에 달라야 similerly 우리는 다른 탭에서 다른 버튼에 줄 수있다.