0

こんにちは、XML ファイルを Fragments として拡張して ViewPagerIndicator にバインドできましたが、重要な findViewById コードを使用してボタンをコードに参照することはできません。誰かが助けることができるので、これは私のコードです

    package com.example.sliding;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class twoey extends Fragment {

    Button lol;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View v = inflater.inflate(R.layout.two, null);
        return v;

        lol = (Button) findViewById (R.id.button1);

    }
}

しかし、私が何をしようとしても、findViewById単語の小さな赤いうごめく行を取得できません誰かが助けてくれますか?

4

3 に答える 3

3

コードに 2 つのエラーがあります。

  1. return v;メソッドの最後の行でなければなりません。それ以降の行は実行できません! に到達できないため、コンパイル エラーが発生しました。

  2. lol = (Button) findViewById (R.id.button1);が必要であるlol = (Button) v.findViewById (R.id.button1);か、アクティビティの一部であり、アクティビティではないNullPointerExceptionため、必要があります。button1View v

正しいコードは次のとおりです。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.two, null);

    lol = (Button) v.findViewById (R.id.button1);
    return v;
}
于 2013-04-11T06:52:14.297 に答える
0

Java コンパイラは、returnステートメントの後に記述されたコードにアクセスできません。returnは、メソッドの使用が終了し、メソッドから値を返すことを意味するため、その後に何かを実行しても意味がありません。したがって、呼び出しの前に (ルート ビューであるためlol = (Button) findViewById (R.id.button1)、実際には として呼び出す必要があります) を移動するだけで、コードは適切にコンパイルされます。お役に立てれば。lol = (Button) v.findViewById (R.id.button1)vreturn v

于 2013-04-11T06:55:19.190 に答える
0

をオーバーライドしonViewCreated()ます。このような:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
    lol = (Button) getView().findViewById (R.id.button1);

    .... // ANY OTHER CASTS YOU NEED TO USE IN THE FRAGMENT
}
于 2013-04-11T06:57:43.157 に答える