2016-03-21 11 views
1

これはナビゲーション・ドロワーで使用している私の断片の1つです。私は、押されたときにテキストボックスを別のテキストに変更するボタンを追加する必要があります。 findviewbyid()intが解決できないなどのエラーが発生し続ける。私はMainActivity/activity_mainでこれを扱うことができますが、(ConnectFragment.java/fragment_connect.xmlのような)nav drawerのページの1つを使用すると、エラーが発生します。findviewbyid - 解決できません

これは、これは私がここにXML(相対レイアウトタグから

final Button ClassAButton = (Button)findViewById(R.id.ClassAButton); 

    ClassAButton.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View view){ 
        TextView FeloniesText = (TextView)findViewById(R.id.FeloniesText); 
        FeloniesText.setText("Button 1 Has been pressed!"); 
       } 
      } 
    ); 

コードを実装するコードであるだけではただConnectFragmentのコード

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

public class ConnectFragment extends Fragment { 


public ConnectFragment() { 
} 

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

    View rootView = inflater.inflate(R.layout.fragment_connect, container, false); 


    return rootView; 


} 

}

です書式設定がうまくいかなかった)

http://schemas.android.com/tools " アンドロイド:layout_width = "match_parent" アンドロイド:layout_height = "match_parent" アンドロイド:オリエンテーション= "縦" アンドロイド:背景= "@カラー/ backgroundColorの">

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/ClassAButton" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Large Text" 
    android:id="@+id/FeloniesText" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="107dp" /> 
    </RelativeLayout> 

私も複数のボタンを追加しますテキストビューを別のものに変更するためには、クラスAボタンが表示され、クラスBボタンが印刷され、クラスCボタンが象を印刷します。その他のヘルプは非常に高く評価されます。 :D BTW API 15

答えて

1

に必要な代わりに

(TextView)findViewById(R.id.FeloniesText); 

のようViewGroupの一部です。

この行を変更してください。

final Button ClassAButton = (Button)findViewById(R.id.ClassAButton); 

これはこれです。

final Button ClassAButton = (Button) rootView.findViewById(R.id.ClassAButton); 

TextView FeloniesText = (TextView) rootView.findViewById(R.id.FeloniesText); 

編集:テキストビューのためにこれを試してみてください。

ClassAButton.setOnClickListener(new View.OnClickListener(){ 
       public void onClick(View view){ 
        FeloniesText.setText("Button 1 Has been pressed!"); 
       } 
      } 
    ); 

これをコードに置き換えます。

編集2:

あなたのコードでこの完全なコードを交換してください。

参考リンクでは、彼らは行動を取っており、断片を取っています。

public class ConnectFragment extends Fragment { 

final Button ClassAButton; 
TextView FeloniesText; 



public ConnectFragment() { 
} 

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

    View rootView = inflater.inflate(R.layout.fragment_connect, container, false); 
    init(rootView); 
    return rootView; 

} 


public void init(View view) 
{ 
    ClassAButton = (Button) view.findViewById(R.id.ClassAButton); 
    FeloniesText = (TextView) view.findViewById(R.id.FeloniesText); 
    ClassAButton.setOnClickListener(new View.OnClickListener(){ 
       public void onClick(View view){ 
        FeloniesText.setText("Button 1 Has been pressed!"); 
       } 
      } 
    ); 
} 
+0

ため、このエラーを取得し、最終的な イムを宣言する必要があります。 –

+0

助けてくれてありがとう、コードが動作し、それ以上のエラーはありませんが、ボタンを押すと、アプリがクラッシュして、助けてくれますか? –

+0

致命的な例外:メイン プロセス:nota.outlawsindex、PID:3236 java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'void android.widget.TextView.setText(java.lang.CharSequence)'を呼び出そうとしました nota.outlawsindex.ConnectFragment $ 1.onClick(ConnectFragment.java:33) –

1

findViewByIdFragmentの一部ではありません。それはあなたがこれを試してみてください

(TextView)rootView.findViewById(R.id.FeloniesText); 
+0

TextView FeloniesText =(TextView)rootView.findViewById(R.id。FeloniesText);以下のように 現在取得エラー:内部クラス内からアクセスされる変数「ルートビューは」私の編集した答えをチェック@TyreseBrownだけこの行ではなく、他の人 –

関連する問題