1

ここで、TabViewは、この特定のフラグメントを追加するクラスです。Searchは、ユーザーからファイル名を取得するMainActivityです。アセットフォルダにいくつかのテキストファイルがあります。ユーザーが名前(たとえば、hello)を入力すると、それはhello.txtに連結され、検索アクティビティに変数として格納されます。この値は、returnfuncを使用して取得します。それで、ここに主な問題があります。hello.txtからデータを取得しようとすると、この部分に関してはアプリが突然閉じます。どこでも検索しました。何も見つかりませんでした。助けてください。

    public class fg1 extends Fragment {

        LinearLayout layout;
        private String file;
        private Search obj;
        private Context mX;
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            if (container == null) {
                return null;
            }


        layout = (LinearLayout)inflater.inflate(R.layout.fg_code, container, false);
        TextView snippet = (TextView)layout.findViewById(R.id.codeView);

        mX = TabView.getContext();
        AssetManager assetManager = mX.getAssets();
        file = obj.getFileName();
                InputStream input;
            try {
                 input = assetManager.open(file);

                 int size = input.available();
                 byte[] buffer = new byte[size];
                 input.read(buffer);
                 input.close();
                 // byte buffer into a string
                 String text = new String(buffer);
                 snippet.setText(text);

         } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
         }  
        return layout;
    }
}
4

1 に答える 1

1

自分で答えを見つけました。今後の参照のために、アクティビティからデータを取得する代わりに、特定のフラグメントをホストする親アクティビティからフラグメントにデータを渡し(フラグメントのコンストラクターをお勧めします)、それを使用します。

于 2013-01-13T10:39:36.437 に答える