2017-06-08 55 views
0

我是一名android.app中的新手程序員。我試圖開發一個簡單的親子鑑定血液測試。邏輯是這樣的。我有三個旋轉器和血型A,B,AB和O將被列入微調器。用戶必須從A,B,AB或O中爲孩子,母親和父親選擇血型,然後單擊提交按鈕。按鈕將進行一些匹配併產生一個字符串結果。我試過了我在互聯網上找到的幾種方法。但仍然無法使用按鈕點擊功能。 這是我的代碼.Plz糾正了我的錯誤。謝謝。在android片段視圖中使用微調和按鈕單擊

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:text="TextView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/btn_paternity" 
      android:layout_centerHorizontal="true" 
      android:gravity="center_horizontal" 
      android:layout_marginTop="52dp" 
      android:id="@+id/paternity_ans" /> 

     <TextView 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:id="@+id/textView6" 
      android:text="Father" 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium" 
      android:layout_width="100dp" 
      android:layout_above="@+id/childblds" 
      android:layout_centerHorizontal="true" /> 

     <TextView 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:layout_marginTop="53dp" 
      android:id="@+id/textView5" 
      android:text="Child " 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium" 

      android:layout_width="100dp" 
      android:layout_marginRight="15dp" 
      android:layout_marginEnd="15dp" 
      android:layout_alignParentTop="true" 
      android:layout_toLeftOf="@+id/btn_paternity" 
      android:layout_toStartOf="@+id/btn_paternity" /> 

     <Spinner 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:spinnerMode="dialog" 
      android:id="@+id/dadblds" 
      android:dropDownWidth="match_parent" 
      android:layout_toLeftOf="@+id/textView4" 
      android:layout_toStartOf="@+id/textView4" 
      android:layout_alignBottom="@+id/childblds" 
      android:layout_alignTop="@+id/childblds" /> 

     <Spinner 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/childblds" 
      android:spinnerMode="dialog" 

      android:dropDownWidth="match_parent" 
      android:layout_marginTop="13dp" 

      android:layout_below="@+id/textView5" 
      android:layout_alignLeft="@+id/textView5" 
      android:layout_alignStart="@+id/textView5" /> 

     <Spinner 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/momblds" 
      android:spinnerMode="dialog" 
      android:entries="@array/paternitybldtype" 
      android:dropDownWidth="match_parent" 
      android:layout_alignTop="@+id/dadblds" 
      android:layout_alignLeft="@+id/textView4" 
      android:layout_alignStart="@+id/textView4" /> 

     <Button 
      android:text="Button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/btn_paternity" 
      android:layout_below="@+id/dadblds" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="35dp" /> 

     <TextView 
      android:layout_height="wrap_content" 
      android:id="@+id/textView4" 
      android:gravity="center_horizontal" 

      android:text="Mother" 
      android:textAppearance="@style/TextAppearance.AppCompat.Medium" 
      android:layout_width="100dp" 
      android:layout_marginLeft="9dp" 
      android:layout_marginStart="9dp" 
      android:layout_above="@+id/childblds" 
      android:layout_toRightOf="@+id/textView6" 
      android:layout_toEndOf="@+id/textView6" /> 
    </RelativeLayout> 
</LinearLayout> 

片段代碼:

public class Paternitytest extends Fragment { 


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

     final View view = inflater.inflate(R.layout.paternitytestlo, container, false); 
     final Button setItem = (Button) view.findViewById(R.id.btn_paternity); 
     final TextView txt1 = (TextView) view.findViewById(R.id.paternity_ans); 

     setItem.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       //Some if else statement will be applied here by using String c, f and m 
      } 
     }); 

     return view; 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     Spinner childspinner = (Spinner) view.findViewById(R.id.childblds); 
     Spinner dadspinner = (Spinner) view.findViewById(R.id.dadblds); 
     Spinner momspinner = (Spinner) view.findViewById(R.id.momblds); 

     // Spinner Drop down elements 
     String[] categories = {"A", "B", "O", "AB",}; 

     // Creating adapter for spinner 
     ArrayAdapter adapter = new ArrayAdapter(
       getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, categories); 

     // Drop down layout style - list view with radio button 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     childspinner.setAdapter(adapter); 
     dadspinner.setAdapter(adapter); 
     momspinner.setAdapter(adapter); 

     // Spinner click listener 
     childspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

       String c = parent.getItemAtPosition(position).toString(); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

     dadspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      public void onItemSelected(AdapterView<?> parent, View view, 
             int position, long id) { 

       String f = parent.getItemAtPosition(position).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

     momspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

      public void onItemSelected(AdapterView<?> parent, View view, 
             int position, long id) { 
       String m = parent.getItemAtPosition(position).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 
    } 
} 
+0

你說'不能使用按鈕點擊功能'是什麼意思? –

+0

您是否想通過單擊按鈕從微調器中獲取選定的文本? – sam

+0

是的。我想從單擊按鈕上的微調器中獲取選定的文本。 我無法調用按鈕click內的字符串值。所以,我想知道使用它的方法。 –

回答

0

我已經在你的代碼的一些變化如此嘗試。

public class Paternitytest extends Fragment { 

    private String childSpinnerString, momSpinnerString, dadspinnerString; 

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

     final View view = inflater.inflate(R.layout.paternitytestlo, 
       container, false); 

     final Button setItem = (Button) view.findViewById(R.id.btn_paternity); 

     final TextView txt1 = (TextView) view.findViewById(R.id.paternity_ans); 


     setItem.setOnClickListener(new View.OnClickListener() 
     { 
       @Override 
       public void onClick(View view) 
       { 

        //Some if else statement will be applied here by using String c, f and m 

        Log.d("Blood groups- ", "Child - " + childSpinnerString + " Mom - " + momSpinnerString + " Dad - " + dadspinnerString); 

       } 
     }); 


     return view; 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     Spinner childspinner = (Spinner) view.findViewById(R.id.childblds); 
     Spinner dadspinner = (Spinner) view.findViewById(R.id.dadblds); 
     Spinner momspinner = (Spinner) view.findViewById(R.id.momblds); 


     // Spinner Drop down elements 
     String[] categories = {"A", "B", "O", "AB",}; 

     // Creating adapter for spinner 
     ArrayAdapter adapter = new ArrayAdapter(
        getActivity().getApplicationContext(), android.R.layout.simple_list_item_1, categories); 


     // Drop down layout style - list view with radio button 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     childspinner.setAdapter(adapter); 
     dadspinner.setAdapter(adapter); 
     momspinner.setAdapter(adapter); 


     // Spinner click listener 
     childspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View view, 
             int position, long id) { 
       childSpinnerString = parent.getItemAtPosition(position).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 
     dadspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View view, 
             int position, long id) { 

       dadspinnerString = parent.getItemAtPosition(position).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 
     momspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      public void onItemSelected(AdapterView<?> parent, View view, 
             int position, long id) { 
       momSpinnerString = parent.getItemAtPosition(position).toString(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

    } 
} 
+0

非常感謝您的代碼。@ androidnoobdev。現在我的程序正常運行。似乎在開始時聲明私有字符串解決了問題。 :) –

+0

是的。你在本地字段中存儲的值在外部不可用,所以你不能獲取值。感謝您接受答案... – androidnoobdev

0

嘗試onClickListener您的按鈕:

btn_paternity.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      String mom = momblds.getSelectedItem().toString(); 

     } 
    });