2016-07-17 16 views
1

に取り組んでOnClickListenerに問題を持っていません。誰でも助けることができますか?OnClickListenerは、私がフラグメントを試す断片

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     frag_one frag1=new frag_one(); 
     FragmentManager manager=getSupportFragmentManager(); 
     FragmentTransaction transaction=manager.beginTransaction(); 
     transaction.add(R.id.top,frag1,""); 
     transaction.commit(); 
    } 
} 

frag_one.java

public class frag_one extends Fragment{ 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.activity_frag_one,container,false); 
    } 

    public class calculator extends AppCompatActivity implements View.OnClickListener { 
     TextView get_result; 
     EditText get_num1; 
     EditText get_num2; 
     Button get_button; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_frag_one); 
      get_result=(TextView)findViewById(R.id.result); 
      get_num1=(EditText) findViewById(R.id.num1); 
      get_num2=(EditText) findViewById(R.id.num2); 
      get_button=(Button)findViewById(R.id.submit); 
      get_button.setOnClickListener(this); 
     } 
     public void onClick(View v) { 
      int num1=Integer.parseInt((get_num1.getText().toString())); 
      int num2=Integer.parseInt((get_num2.getText().toString())); 
      int sum=num1+num2; 
      get_result.setText(Integer.toString(sum)); 
     } 
    } 
} 

私はフラグメントを使用せずに通常の活動で実行されます。ボタンをクリックすると、計算が機能します。しかし、私がフラグメントに移動するとき、それは動作しません。助けてください! THX

enter image description here

+1

フラグメントの下に新しいクラスを作成しようとしている理由がわかりません。フラグメントの特定のメソッドがあります。 – Saveen

+0

@Sav eenそれは断片の中で 'public'になれません。 calculator.javaを作成した場合、 –

+0

@ cricket_007を指摘してくれてありがとう。それをどのようにしてフラグメントにリンクさせることができますか? – gosulove

答えて

1

は、あなたが実際にフラグメントにロジックを置くのではなく、フラグメントのレイアウトを使用する第2の活動をしたのに役立ちます願っていますクラス....

public class frag_one extends Fragment implements View.OnClickListener { 

    TextView get_result; 
    EditText get_num1; 
    EditText get_num2; 
    Button get_button; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.activity_frag_one,container,false); 

     get_result=(TextView)rootView.findViewById(R.id.result); 
     get_num1=(EditText)rootView.findViewById(R.id.num1); 
     get_num2=(EditText) rootView.findViewById(R.id.num2); 
     get_button=(Button)rootView.findViewById(R.id.submit); 
     get_button.setOnClickListener(this); 

     return rootView; 
    } 

    public void onClick(View v) { 
     // TODO: Check v.getId() == R.id.submit 
     int num1=Integer.parseInt((get_num1.getText().toString())); 
     int num2=Integer.parseInt((get_num2.getText().toString())); 
     int sum=num1+num2; 
     get_result.setText(Integer.toString(sum)); 
    } 
} 
+0

THX仲間必要はありません!それは今働く:) – gosulove

0

あなたがここに任意のビューを言及していない、これはあなた

public class ABC extends Fragment implements OnClickListener { 

View view; 
Context context; 

Button btnClick; 

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

    view = inflater.inflate(R.layout.fragment, container, false); 

    return view; 
} 

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    context = activity; 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 

} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    btnClick = (Button) view.findViewById(R.id.btnClick); 
    btnClick.setOnClickListener(this); 


} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.btnClick: 


     break; 
    default: 
     break; 
    } 

} 

} 
+0

それを必要としないので、1つのJavaファイルと同じレベルにある2つの' public'クラスを持つことができません'...と(正しいしばらく)スイッチは、 –

+0

はい右我々はできるが、フラグメント内の彼の質問はonclickの動作していないので、私が追加した簡単なデモ – Saveen

関連する問題