2015-11-27 2 views
-2

Я работаю на андроид проектаМой метод по методу события OnClick ничего

  1. не делать Создание метода на MainActivity, как показано ниже:

    public void diagnose(View View) { 
    
        System.out.println("%%%%%%%%%%%%%%%%% INSIDE DIAGNOSE %%%%%%%%%%%%%%"); 
    
        String PTCondition = " "; 
    
        int row, col, count, percentageOfLikelihood, maxPercent = 0; 
    
        //To store the name of each condition and its percentage of likelihood 
        String[][] percentPerCondition = new String[8][]; 
    
        percentPerCondition[0][0] = "Rotator Cuff Strain"; 
        percentPerCondition[1][0] = "Coracoid Impingement"; 
        percentPerCondition[2][0] = "Supraspinatus Impingement"; 
        percentPerCondition[3][0] = "Bicipital Tendonitis"; 
        percentPerCondition[4][0] = "Glenohumeral Dislcation"; 
        percentPerCondition[5][0] = "Clavicular Fracture"; 
        percentPerCondition[6][0] = "Labral Tear"; 
        percentPerCondition[7][0] = "SubAcromial Bursitis"; 
    
        //Store binary sequence of Special Tests that correspond to the conditions above 
        int[][] STValuesPercondition = new int[][] { 
         { 
          1, 0, 1, 0, 1 
         }, { 
          0, 1, 0, 1, 1 
         }, { 
          0, 1, 1, 0, 0 
         }, { 
          1, 1, 0, 0, 1 
         }, { 
          0, 0, 1, 1, 1 
         }, { 
          1, 1, 0, 1, 0 
         }, { 
          1, 0, 1, 1, 0 
         }, { 
          0, 1, 1, 1, 0 
         } 
        }; 
    
        //Compare the binary sequence in PTFindings to all conditions 
        for (row = 0; row < STValuesPercondition.length; row++) { 
         count = 0; 
         for (col = 0; col < STValuesPercondition.length; col++) { 
          if (STValuesPercondition[row][col] == PTFindings[row]) count++; 
         } 
    
         //Calculate percentage of likelihood 
         percentageOfLikelihood = (count/5) * 100; 
         if (percentageOfLikelihood > maxPercent) { 
          maxPercent = percentageOfLikelihood; 
          PTCondition = percentPerCondition[row][0]; 
         } 
    
         System.out.println("&&&&&&& Inside diagnosis: " + PTCondition); 
         //Store percentage as a String in the percentPerCondition 2D array; may need it later 
         percentPerCondition[row][1] = Integer.toString(percentageOfLikelihood); 
        } 
    
        //Point to the TextView where data to be displayed - in layout file (displaydx) 
        DxTextView = (TextView) findViewById(R.id.dx1); 
    
        //Populate the textView with the data from 
        DxTextView.setText(PTCondition); 
    
        //Display the PTCondition on the activity 
        String passPTCondition = ""; 
    
        Intent i = new Intent(getApplicationContext(), DisplayDxActivity.class); 
        i.putExtra(passPTCondition, PTCondition); 
        startActivity(i); 
    
    } //public void diagnose(View View) 
    
  2. Вот мой файл макета; кажется, что метод (диагноз (View View)) не вызван. Мой метод диагностики() определен в onCreate() Ничего не происходит, когда я нажимаю на диагностику? !!!!

    <Button 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Generate Possible Diagnoses" 
        android:id="@+id/SubmitButton" 
        android:textColor="#ffff6949" 
        android:background="#ffffffff" 
        android:textStyle="bold" 
        android:onClick="diagnose" /> 
    
    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:id="@+id/dx1" 
        android:layout_gravity="center_horizontal" /> 
    

+1

попробуйте 'public void diagnose (View view)', с нижним регистром. –

+0

Пробовал и до сих пор не работает – Mike

+0

Как насчет 'public void diagnose (View v)'? –

ответ

1

Ваш код, кажется, прямо в стороне от кода конвенции ошибки в имени параметра зрения.

Убедитесь, что вы надули макет в своем методе onCreate, и ваш метод diagnose будет называться.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_main_layout); 
    // Where your_main_layout is the one who has the android:onClick="diagnose" 
    // Rest of the code... 
} 

Только в случае, скажем, что был введен в уровне API 4 года поэтому убедитесь, что ваша цель API выполняет это.

EDIT:

В качестве другого теста можно добавить View.OnClickListener слушателя к вашей деятельности и получить все события OnClick от View идентификаторов добавляющего этого метода к вашему MainActivity.java:

public class MainActivity extends Activity implements View.OnClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_main_layout); 
     findViewById(R.id.SubmitButton).setOnClickListener(this); 
    } 
    .... 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.SubmitButton: 
       diagnose(v); 
       break; 
      default: 
       break; 
     } 
    } 

, как @ @ Mike Coeus well также обнаружил, переместите метод diagnose из onCreate и сделайте его методом класса MainActivity. В противном случае, когда Android ищет метод diagnose, найденный в макете с использованием отражения, он ничего не найдет.

+0

Вы хотите определить мой метод диагностики (View v) внутри onCreate ??? – Mike

+0

Нет нет, остальная часть кода 'onCreate', остальная часть кода в порядке. – GoRoS

+0

не уверен, что вы имеете в виду? – Mike

Смежные вопросы