2017-06-03 6 views
-1

アクティビティを使用している間、これらのコードは正常に動作しています。しかし、私はフラグメントを使用するように変更した後、それは私にEnterがnullオブジェクトであることを伝え続けるので、それにonClickListenerを追加できません。フラグメント化してfindviewByidしようとするとヌルオブジェクト

**アップデート: 私はgetView(),viewgetActivity()を試してみました。しかし、それらのどれも私のために働くことはありません。 **

コードがあります:

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import com.maichongju.calculator.R; 

import java.math.BigInteger; 

public class Addition_Fragment extends Fragment{ 
public static final String TAG = "TAG"; 

private Button Enter; // The Enter Button 
private EditText Number1; // Top Number EditText 
private EditText Number2; // Bot Number EditText 
private TextView ResultView; // Result View 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for thlis fragment 
    View view = inflater.inflate(R.layout.fragment_addition_,container,false); 
    setup(); 
    return view; 
} 
private void setup() { 
    define(); 
    Enter.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String n1 = Number1.getText().toString().trim(); 
      String n2 = Number2.getText().toString().trim(); 
      if (n1.length() == 0 || n2.length() == 0) { 
       if (n1.length() == 0 && n2.length() == 0) { 
        ResultView.setText(getString(R.string.Result_Text_Default)); 
       } else if (n1.length() == 0) { 
        ResultView.setText(getString(R.string.Result_Text_Number1_Missing)); 
       } else { 
        ResultView.setText(getString(R.string.Result_Text_Number2_Missing)); 
       } 

      } else { 
       BigInteger result = Calculation(n1, n2); 
       ResultView.setText(n1 + " + " + n2 + " = " + result.toString()); 
      } 

     } 
    }); 
} 

private BigInteger Calculation(final String s1, final String s2) { 
    final BigInteger n1 = new BigInteger(s1); 
    final BigInteger n2 = new BigInteger(s2); 
    return n1.add(n2); 
} 

private void define() { 
    Enter = (Button) getActivity().findViewById(R.id.Enter_Button); 
    Number1 = (EditText) getActivity().findViewById(R.id.Number_EditText1); 
    Number2 = (EditText) getActivity().findViewById(R.id.Number_EditText2); 
    ResultView = (TextView) getActivity().findViewById(R.id.ResultTextView); 
} 

} 

そして、これはXMLファイルです:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <EditText 
     android:id="@+id/Number_EditText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="80dp" 
     android:ems="10" 
     android:hint="@string/Number_Filed_Text" 
     android:inputType="number" 
     android:textAlignment="center" 
     android:theme="@style/EditTextTheme" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <EditText 
     android:id="@+id/Number_EditText2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="24dp" 
     android:ems="10" 
     android:hint="@string/Number_Filed_Text" 
     android:inputType="number" 
     android:textAlignment="center" 
     android:theme="@style/EditTextTheme" 
     app:layout_constraintLeft_toLeftOf="@+id/Number_EditText1" 
     app:layout_constraintRight_toRightOf="@+id/Number_EditText1" 
     app:layout_constraintTop_toBottomOf="@+id/Number_EditText1" /> 

    <TextView 
     android:id="@+id/ResultTextView" 
     android:layout_width="250dp" 
     android:layout_height="127dp" 
     android:layout_marginBottom="16dp" 
     android:text="@string/Result_Text_Default" 
     android:textAlignment="center" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="@+id/Enter_Button" 
     app:layout_constraintRight_toRightOf="@+id/Enter_Button" 
     app:layout_constraintTop_toBottomOf="@+id/Enter_Button" 
     app:layout_constraintVertical_bias="0.25" /> 

    <Button 
     android:id="@+id/Enter_Button" 
     android:layout_width="138dp" 
     android:layout_height="49dp" 
     android:layout_marginTop="32dp" 
     android:text="@string/Calculate_Button_Name" 
     android:textAllCaps="false" 
     android:textColor="@color/White" 
     android:theme="@style/Button_Blue" 
     app:layout_constraintLeft_toLeftOf="@+id/Number_EditText2" 
     app:layout_constraintRight_toRightOf="@+id/Number_EditText2" 
     app:layout_constraintTop_toBottomOf="@+id/Number_EditText2" /> 
</android.support.constraint.ConstraintLayout> 
+0

がフラグメントであなたの意見はあります役立つことを願っています

?もしそうなら、 'getActivity'はそれらを見つける方法ではありません –

+0

あなたはそれを編集ではなくコメントとして書くべきです。あなたがコメントしたことを他の人に通知するために、 '@ username'と書くことでユーザーに通知することができます。 ( '@ cricket_007'はcricket_007に通知を送信します。 – Sufian

答えて

0

この変更:これに

Enter = (Button) getActivity().findViewById(R.id.Enter_Button); 

Enter = (Button) view.findViewById(R.id.Enter_Button); 

は、main関数の外にビューを宣言することを忘れないでください、私はこれが

+0

ありがとう、問題スローブ –

関連する問題