2016-08-11 3 views
0

Ich habe ein Raster-Layout, das so viele wie 9 Tasten enthält. Ich möchte Klick-Listener für jede Schaltfläche festlegen.Schaltfläche Klicken Sie auf Listener für Schaltflächen im Raster Layout

Dies ist, was ich bisher getan haben, die funktioniert offensichtlich nicht:

Fragment Datei:

public class Fragment2 extends Fragment { 
int choice = -1; 
Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment2_layout,container,false); 

    btn1 = (Button) view.findViewById(R.id.b1); 
    btn2 = (Button) view.findViewById(R.id.b2); 
    btn3 = (Button) view.findViewById(R.id.b3); 
    btn4 = (Button) view.findViewById(R.id.b4); 
    btn5 = (Button) view.findViewById(R.id.b5); 
    btn6 = (Button) view.findViewById(R.id.b6); 
    btn7 = (Button) view.findViewById(R.id.b7); 
    btn8 = (Button) view.findViewById(R.id.b8); 
    btn9 = (Button) view.findViewById(R.id.b9); 
    if(choice == 0) 
     ButtonClicked1(); 
    else 
    if(choice == 1) 
     ButtonClicked2(); 
    choice = getArguments().getInt("ch"); 
    Toast.makeText(getActivity(), String.valueOf(choice), Toast.LENGTH_SHORT).show(); 
    return view; 
} 

public void ButtonClicked1(){ 
    btn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "1", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "2", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "3", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "4", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "5", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "6", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "7", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "8", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    btn9.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(getActivity(), "9", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

public void ButtonClicked2() { 
} 

}

Die XML-Datei:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/RL"> 

<GridLayout 
    android:layout_marginTop="120dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:columnWidth="20dp" 
    android:id="@+id/gridLayout"> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b1" 
     android:layout_row="0" 
     android:layout_column="0" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b4" 
     android:layout_row="1" 
     android:layout_column="0" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b2" 
     android:layout_row="0" 
     android:layout_column="1" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b3" 
     android:layout_row="0" 
     android:layout_column="2" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b5" 
     android:layout_row="1" 
     android:layout_column="1" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b7" 
     android:layout_below="@+id/gridLayout" 
     android:layout_alignParentStart="true" 
     android:layout_row="2" 
     android:layout_column="0" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b8" 
     android:layout_row="2" 
     android:layout_column="1" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b6" 
     android:layout_row="1" 
     android:layout_column="2" 
     android:background="#ffffff" /> 

    <Button 
     android:layout_width="120dp" 
     android:layout_height="120dp" 
     android:text="New Button" 
     android:id="@+id/b9" 
     android:layout_row="2" 
     android:layout_column="2" 
     android:background="#ffffff" /> 
</GridLayout> 

+2

Ihre Wahl Variable wird mit -1 initialisiert, daher wird 'ButtonClicked1()' nie aufgerufen. Verschieben Sie die Zeile 'choice = getArguments(). GetInt ("ch");' up und sicher sein, ch in den Argumenten zu setzen. – Bmuig

Antwort

0

Sobald Sie Objekt der View-Klasse oder ihrer Unterklassen bekam können Sie OnClickListener dafür registrieren, so

btn1 = (Button) view.findViewById(R.id.b1); 
... 
btn9 = (Button) view.findViewById(R.id.b9); 

btn1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Toast.makeText(getActivity(), "1", Toast.LENGTH_SHORT).show(); 
    } 
}); 

und so weiter. Wenn Sie es kontrollieren möchte zusätzliche Argumente zu übergeben müssen Sie sie zuerst lesen:

choice = getArguments().getInt("ch"); 
if(choice == 0){ 
    ButtonClicked1(); 
} else if(choice == 1){ 
    ButtonClicked2(); 
} 
0

Ähm, na ja, choice-1 ist, und so weder ButtonClicked1() noch ButtonClicked2() gehen zu nennen.

Sie rufen nicht choice = getArguments().getInt("ch"); bis nach Sie choice überprüfen, um zu sehen, ob es 0 oder 1.

0

statt dies:

if(choice == 0) // at this point choice=-1 
     ButtonClicked1(); 
    else 
    if(choice == 1) //at this point choice=-1 
     ButtonClicked2(); 
    choice = getArguments().getInt("ch"); // now you are getting value 

dies tun:

choice = getArguments().getInt("ch"); // now you are getting value 
if(choice == 0) // at this point choice="ch value" 
      ButtonClicked1(); 
     else 
     if(choice == 1) //at this point choice="ch value" 
      ButtonClicked2(); 
Verwandte Themen