0

ボタンを使用して、入力テキストをテキストビューに配置するだけのメソッドを呼び出しています。findViewById を使用するたびに、null が返されます。

public void encode(View view){
  TextView out = (TextView) view.findViewById(R.id.encoderout);
  EditText in = (EditText) view.findViewById(R.id.encoderin);
  out.setText(in.getText().toString());
  out.setTypeface(font);
}

私のxmlはここにあります

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
    >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    >
    <EditText android:id="@+id/encoderin"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="wrap_content"
        android:hint="Text to encode"/>
    <Button android:id="@+id/encoderbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="encode"
        android:text="Encode!"/>
</LinearLayout>
<TextView android:id="@+id/encoderout"
    android:text="test"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:layout_height="wrap_content"/>
</LinearLayout>

私が見つけたほぼすべての投稿は、プロジェクトのクリーニングが問題の解決に役立つと述べていましたが、この場合はそうではありませんでした.

編集:追加情報

私はフラグメントを使用しています。これが私のフラグメントコードです

public static class Encoder extends Fragment{
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.encoder, container, false);       
    return view;
  }
}

ボタンが機能する方法のために、アクティビティを呼び出しています。フラグメント内で find メソッドを呼び出すことはできますが、アクティビティに戻らなければならないときは呼び出すことができません。

ビューが null でないことを確認できます。メソッドで toString が呼び出されると、正常に出力されます。

解決策: メイン ビューを使用する必要があることに気づかず、ボタン ビューを使用することを想定していました。私はこれに非常に慣れていません(今日から始めました)ご意見をお寄せいただきありがとうございます!

4

2 に答える 2

3
<Button android:id="@+id/encoderbutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="encode"
    android:text="Encode!"/>

Java コードのviewコールバック メソッドのパラメーターは、ビュー自体では提供されますが、.encode(View view)ButtonActivity

以下の参照を参照してください。

http://developer.android.com/reference/android/widget/Button.html

于 2012-07-03T02:27:25.983 に答える
1

FragmentonClickXML で宣言されているメソッドを受け取りません。代わりに で定義encodeActivity、目的の動作を適切な に向ける必要がありますFragment。面倒ですが、それがその方法です。フラグメントとアクティビティの動作が絡み合わないように、コードにOnClickListenerプログラムで実装することをお勧めします。Fragment

于 2012-07-03T02:29:05.303 に答える