2016-08-11 109 views
0

我有一個網格佈局,其中有多達9個按鈕。我想爲每個按鈕設置按鈕點擊偵聽器。按鈕單擊網格佈局中按鈕的偵聽器

這是我迄今所做的,這顯然是行不通的:

片斷文件

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() { 
} 

}

它的XML文件

<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

您的選擇變量被初始化爲-1,所以'ButtonClicked1()'永遠不會被調用。移動該行'choice = getArguments()。getInt(「ch」);'並確保在參數中設置ch。 – Bmuig

回答

0

一旦你得到了View類或其子類的對象,你可以爲它註冊OnClickListener所以

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(); 
    } 
}); 

等。如果你想通過傳遞額外的參數給CONTROLL它,你必須先閱讀:

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

嗯,好,choice-1,所以既不ButtonClicked1()也不ButtonClicked2()將要被調用。

你是不是叫choice = getArguments().getInt("ch");直到後你檢查choice,看它是否是0或1

0

,而不是這樣的:

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 

做到這一點:

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();