0

このフラグメントタブの問題をどうするか知っている人はいますか?

私は非常に初心者のプログラマーであり、特に Android アプリケーション開発の世界ではあまり経験がありません。最近、フラグメントタブを使用してプロジェクトを開始しましたが、オブジェクトにアクセスしようとすると(より適切な言葉がないため、TextView、Spinner、EditTextなどを意味します)、次のようなものであることがわかりました

TextView textBox = (TextView) getView().findViewById(R.id.scouter_name_box);

コンパイラはエラーを検出しませんが、アプリはクラッシュします。このコード行を関数、フラグメント自体の本体 (onCreate() の後)、および onCreate() の最後に配置しようとしました。これは役に立ちません。エラーログも何も言いません。

さらに、この行をコメントアウトすると、アプリの残りの部分がシームレスに実行されます。このアプリには、MainActivity と 3 つのタブ Fragments 以外のアクティビティはありません。

テキストビュー、スピナーなどにアクセスするにはどうすればよいですか?

また、私が述べたように、私は非常に新しいです。より良い説明が必要な場合は、お尋ねください。最初に何を言っているのかわからなかったら申し訳ありません。

私たちは皆、どこかから始めなければなりません

助けてください、そして事前に感謝します

タブ 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 Java ファイル:

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);
    }
}

タブ Java ファイル:

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);
}
4

1 に答える 1

0

まず、削除しSpinner scoutername = (Spinner) getView().findViewById(R.id.choose_scouter_name)ます。次に、から削除getActivity().setContentView(R.layout.tab0fragment);しますonCreate()。内部でxmlを膨張させ、onCreateViewそのビューを使用して他のビューの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);
}
于 2013-05-01T22:10:12.887 に答える