2013-05-01 4 views
0

누구든지이 조각 탭 문제로 무엇을 해야할지 알고 있습니까?조각 탭 이상한 충돌

나는 안드로이드 애플리케이션 개발 세계에서 특히 경험이별로없는 아주 초보 프로그래머입니다. 나는 최근에 조각 탭이있는 프로젝트를 시작하고 난 찾을 것을 나는 개체에 액세스하려고 (더 나은 단어의 부족,하지만 난 텍스트 뷰, 스피너, 글고 치기 등 같은 뜻)

TextView textBox = (TextView) getView().findViewById(R.id.scouter_name_box); 
같은 의한 경우

컴파일러에서 오류가 발견되지 않지만 앱이 다운됩니다. 필자는 함수의 코드 라인을 onCreate() 이후와 onCreate()의 끝에서 자체적으로 조각의 본문에 넣으려고했습니다. 이것은 도움이되지 않습니다. 오류 로그는 또한 아무 것도 말하지 않습니다.

또한이 줄을 주석 처리하면 나머지 응용 프로그램도 원활하게 실행됩니다. 앱에는 MainActivity와 세 개의 탭 단편을 제외한 다른 활동이 없습니다.

TEXTVIEWS, SPINNERS, ETC에 액세스하려면 어떻게해야합니까?

도 언급했듯이 저는 매우 새로운 것입니다. 더 나은 설명이 필요하면 먼저 물어보십시오. 그리고 내가 처음에 무슨 말을하는지 이해하지 못한다면 미안 해요.

우리는 모두 어딘가에

이 도와주세요 시작해야하고 사전에 감사

탭 XML 파일 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView android:id="@+id/input_scouter_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:text="Scouter Name:" 
     android:textSize="25sp" 
     android:textStyle="bold" /> 

    <Spinner android:id="@+id/choose_scouter_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/input_scouter_name" 
     android:entries="@array/scouter_name_list" /> 

</RelativeLayout> 

MainActivity 자바 파일 :

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 
    // Declare Tab Variable 

    Tab tab; 
    ScoutingData ScoutData; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Create the actionbar 
     ActionBar actionBar = getActionBar(); 

     // Hide Actionbar Icon 
     actionBar.setDisplayShowHomeEnabled(true); 
     actionBar.setIcon(R.drawable.red_and_blue_frisbees); 

     // Hide Actionbar Title 
     actionBar.setDisplayShowTitleEnabled(true); 

     // Create Actionbar Tabs 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Create Home Tab 
     tab = actionBar.newTab().setTabListener(new FragmentsTab0()); 
     // Set Tab Title 
     tab.setText("General"); 
     actionBar.addTab(tab); 

     // Create first Tab 
     tab = actionBar.newTab().setTabListener(new FragmentsTab1()); 
     // Set Tab Title 
     tab.setText("Autonomous"); 
     actionBar.addTab(tab); 

     // Create Second Tab 
     tab = actionBar.newTab().setTabListener(new FragmentsTab2()); 
     // Set Tab Title 
     tab.setText("Teleop"); 
     actionBar.addTab(tab); 

     // Create Third Tab 
     tab = actionBar.newTab().setTabListener(new FragmentsTab3()); 
     // Set Tab Title 
     tab.setText("Endgame"); 
     actionBar.addTab(tab); 
    } 
} 

탭 자바 파일 :

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Fragment; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.widget.Spinner; 

public class FragmentsTab0 extends Fragment implements ActionBar.TabListener { 

    private Fragment mFragment; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Get the view from tab0fragment.xml 
     getActivity().setContentView(R.layout.tab0fragment); 
    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     mFragment = new FragmentsTab0(); 
     // Attach tab0fragment.xml layout 
     ft.add(android.R.id.content, mFragment); 
     ft.attach(mFragment); 
    } 

    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     // Remove tab0fragment.xml layout 
     ft.remove(mFragment); 
    } 

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

    //Heeere's the Problem 
    Spinner scouterName = (Spinner) getView().findViewById(R.id.choose_scouter_name); 
} 

답변

0

우선 Spinner scoutername = (Spinner) getView().findViewById(R.id.choose_scouter_name)을 제거하십시오. 둘째, onCreate()에서 getActivity().setContentView(R.layout.tab0fragment);을 삭제하십시오. onCreateView 내에서 xml을 부풀린 다음 해당보기를 사용하여 다른보기의 ID를 가져 오려고합니다. 예 :

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View view; 

     if (container == null) { 

      return null; 
     } 

     view = inflater.inflate(R.layout.tab0fragment, container, false); 
     Spinner scouterName = (Spinner) view.findViewById(R.id.choose_scouter_name); 
} 
+0

이 새 onCreateView() 함수로 onCreate() 함수를 대체한다고 가정합니다. 또한 다른 기능을 수행 한 후 단편의 본문에서 Spinner 호출을 제거했습니다. 필요한 항목을 모두 가져 왔지만 R.layout.nomap의 "nomap"이 필드가 아니라는 오류가 발생합니다. 수정 사항이 있습니까? 아니면이를 대체 할 수 있습니까? 하지만 도움을 주셔서 감사합니다. – Live2Code

+0

예. onCreate() 메서드를 제거하고 onCreateView() 메서드로 대체하십시오. 그리고 노파에 관한 오류는 내 잘못입니다. 게시물을 적절한 코드로 업데이트했습니다. –

+0

이 코드를 사용하면 _ "이 메서드는 형식보기의 결과를 반환해야합니다"_ 오류가 발생합니다. 그것이 무엇이든 의미한다면, 나는 MainActivity 코드를 추가했다. 그러나 또한, 나는'if (container == null)'이 null을 리턴한다는 것을 알아 차렸다. 그러나이 방법은보기 유형입니다. 어떤 시점에서보기를 반환하지 않아도됩니까? 어쩌면 도움을 주셔서 감사합니다 – Live2Code