2017-01-13 2 views
0

私は6つの値を持つ配列を持っています。 私はその配列をスピナーに設定し、デフォルトの選択は3です。 ユーザーが3未満を選択すると、Can notを選択できませんというアラートダイアログを表示します。ユーザーが3を選択すると、あなたは変更する必要があるかのような警告ダイアログを表示することを意味します。 問題は上記3を変更した後、スピナーの選択を変更位置に設定しました。私のプログラムは... は私にどんな解決策を教えてください..あなたがダイアログを見ているSpinner Selectionでデフォルトの選択が変更されたときに警告を表示するには?

import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.os.Handler; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 

import com.android.c_fiber.Intro_Slider.SessionManagement; 
import java.util.Arrays; 
import java.util.HashMap; 

public class spinnerDoubt extends AppCompatActivity{ 

    String[] plans,months; 

    int changed_plan_position,changed_month_position; 
    int plan_position,plan_month; 

    String selectedItem; 
    Spinner spinner_plan,spinner_month; 

    String plan; 
    String month = "1"; 

    boolean isChanged = false; 
    boolean isMonthChanged = false; 

    SessionManagement sessionManagement; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pay_details); 

     plans = new String[]{"Start","Fast","Hot","Pace","Electric","Thunder"}; 

     months = new String[]{"1","3","6","12"}; 

     spinner_plan = (Spinner) findViewById(R.id.pay_plan); 
     spinner_month = (Spinner) findViewById(R.id.pay_month); 

     final ProgressDialog progressDialog = new ProgressDialog(this); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.show(); 

     Runnable progressRunnable = new Runnable() { 

      @Override 
      public void run() { 

       sessionManagement = new SessionManagement(this); 

       HashMap<String,String> hashMap = sessionManagement.getUserDetails(); 

       plan = hashMap.get(SessionManagement.KEY_PLAN_NAME); 

       plan_position = Arrays.asList(plans).indexOf(plan); 
       plan_month = Arrays.asList(months).indexOf(month); 

       ArrayAdapter arrayAdapter = new ArrayAdapter(this,R.layout.layout_spinner,R.id.spinner_text,plans); 
       spinner_plan.setAdapter(arrayAdapter); 
       spinner_plan.setSelection(plan_position); 

       ArrayAdapter arrayAdapter_month = new ArrayAdapter(this,R.layout.layout_spinner,R.id.spinner_text,months); 
       spinner_month.setAdapter(arrayAdapter_month); 
       spinner_month.setSelection(plan_month); 

       progressDialog.dismiss(); 

      } 
     }; 

     Handler pdCanceller = new Handler(); 
     pdCanceller.postDelayed(progressRunnable, 2000); 

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

       int selectPosition = parent.getSelectedItemPosition(); 

       Log.e("plan_position_1",plan_position+""); 
       Log.e("selectedItem",selectPosition+""); 

       if (!isChanged) 
       { 
        if (selectPosition > plan_position) 
        { 
         dialogInterfacePlan("Are You Sure To Change!.."); 
        } 
        else if (selectPosition < plan_position) 
        { 
         AlertDialog.Builder builder = new AlertDialog.Builder(this); 

         builder.setMessage("You Can't Downgrade.. \n Please Contact Our Customer Care Executive.. \n Thank You..") 
           .setCancelable(false) 
           .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             spinner_plan.setSelection(plan_position); 
             dialog.cancel(); 

            } 
           }); 

         AlertDialog alert = builder.create(); 
         alert.show(); 
        } 
       } 
       else { 
        if (selectPosition == plan_position) 
        { 
         isChanged = true; 
         dialogInterfacePlan("Are You Sure To Change!.."); 
        } 
        else if (selectPosition>plan_position) 
        { 
         isChanged = true; 
         dialogInterfacePlan("Are You Sure To Change!.."); 
        } 
        else if (selectPosition<plan_position) { 

         AlertDialog.Builder builder = new AlertDialog.Builder(this); 

         builder.setMessage("You Can't Downgrade.. \n Please Contact Our Customer Care Executive.. \n Thank You..") 
           .setCancelable(false) 
           .setNegativeButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             isChanged = true; 
             spinner_plan.setSelection(changed_plan_position); 
             dialog.cancel(); 
            } 
           }); 

         AlertDialog alert = builder.create(); 
         alert.show(); 
        } 
       } 

      } // to close the onItemSelected 
      public void onNothingSelected(AdapterView<?> parent) 
      { 

      } 
     }); 

     spinner_month.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
     { 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
      { 
       int selectPosition = parent.getSelectedItemPosition(); 

       if (!isMonthChanged) 
       { 
        if (selectPosition>plan_month) 
        { 
         dialogInterfaceMonth("Are You Sure To Change?.."); 
        } 
       } 
       else 
       { 
        if (selectPosition == plan_month){ 
         isChanged = true; 
         dialogInterfaceMonth("Are You Sure To Change?.."); 
        } 
        else if (selectPosition > changed_month_position){ 
         isChanged = true; 
         dialogInterfaceMonth("Are You Sure To Change?.."); 
        } 
        else if (selectPosition<changed_month_position) { 
         isChanged = true; 
         dialogInterfaceMonth("Are You Sure To Change?.."); 
        } 
       } 

      } // to close the onItemSelected 
      public void onNothingSelected(AdapterView<?> parent) 
      { 

      } 
     }); 
    } 

    public void dialogInterfacePlan(String text) 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.setMessage(text) 
       .setCancelable(false) 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 

         changed_plan_position = Arrays.asList(plans).indexOf(selectedItem); 
         isChanged = true; 

         Log.e("After Changed",plan); 
         Log.e("After Changed",changed_plan_position+""); 

        } 
       }) 
       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 

         if (isChanged) { 
          spinner_plan.setSelection(changed_plan_position); 
          dialogInterface.cancel(); 
         } 
         else 
         { 
          spinner_plan.setSelection(plan_position); 
          dialogInterface.cancel(); 
         } 
        } 
       }); 

     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

    public void dialogInterfaceMonth(String text) 
    { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.setMessage(text) 
       .setCancelable(false) 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 

         String change_month = spinner_month.getSelectedItem().toString(); 

         changed_month_position = Arrays.asList(months).indexOf(change_month); 

         isMonthChanged = true; 

         if (changed_month_position == 0) 
         { 
          spinner_month.setSelection(changed_month_position); 
         } 
         else if (changed_month_position == 1) 
         { 
          spinner_month.setSelection(changed_month_position); 
         } 
         else if (changed_month_position == 2) 
         { 
          spinner_month.setSelection(changed_month_position); 
         } 
         else 
         { 
          spinner_month.setSelection(changed_month_position); 
         } 

        } 
       }) 
       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         if (isChanged) { 
          spinner_month.setSelection(changed_month_position); 
          dialogInterface.cancel(); 
         } 
         else 
         { 
          spinner_month.setSelection(plan_month); 
          dialogInterface.cancel(); 
         } 
        } 
       }); 

     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

} 
+0

はあなたの努力をご提示ください。何を試しましたか? –

+0

ここに私が付いてくれてあります。Checdk Out .. –

+0

私は主に出力を得ましたが、設定は3以上で、3から6の間でダウングレードし、警告ダイアログは2倍になります。 –

答えて

1

を二度あるためラインの - ?

spinner_plan.setSelection(plan_position); 

これは、ダイアログを再度表示するOnItemSelectedListenerを呼び出します。
ブール変数を使用して、ダイアログをいつ表示するかを制御できます。 この情報がお役に立てば幸い -

boolean isChanged = false; 
boolean isMonthChanged = false; 
boolean shouldShowDialog=true; 
....... 

更新これまでリスナー -

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

      final int selectPosition = parent.getSelectedItemPosition(); 

      Log.e("plan_position_1", plan_position + ""); 
      Log.e("selectedItem", selectPosition + ""); 

      if(shouldShowDialog){ 
       if (!isChanged) { 
        if (selectPosition > plan_position) { 
         dialogInterfacePlan("Are You Sure To Change!.."); 
        } else if (selectPosition < plan_position) { 
         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 

         builder.setMessage("You Can't Downgrade.. \n Please Contact Our Customer Care Executive.. \n Thank You..") 
           .setCancelable(false) 
           .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             spinner_plan.setSelection(plan_position); 
             shouldShowDialog = false; 
             dialog.cancel(); 
            } 
           }); 

         AlertDialog alert = builder.create(); 
         alert.show(); 
        } 
       } else { 
        if (selectPosition == plan_position) { 
         isChanged = true; 
         dialogInterfacePlan("Are You Sure To Change!.."); 
        } else if (selectPosition > plan_position) { 
         isChanged = true; 
         dialogInterfacePlan("Are You Sure To Change!.."); 
        } else if (selectPosition < plan_position) { 

         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 

         builder.setMessage("You Can't Downgrade.. \n Please Contact Our Customer Care Executive.. \n Thank You..") 
           .setCancelable(false) 
           .setNegativeButton("OK", new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int id) { 
             isChanged = true; 
             spinner_plan.setSelection(changed_plan_position); 
             shouldShowDialog = false; 
             dialog.cancel(); 
            } 
           }); 

         AlertDialog alert = builder.create(); 
         alert.show(); 
        } 
       } 
      } 
      shouldShowDialog = true; 


     } // to close the onItemSelected 

     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

、これまでの方法dialogInterfacePlan -

public void dialogInterfacePlan(String text) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setMessage(text) 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 

        changed_plan_position = Arrays.asList(plans).indexOf(selectedItem); 
        isChanged = true; 

        Log.e("After Changed", plan); 
        Log.e("After Changed", changed_plan_position + ""); 

       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 

        if (isChanged) { 
         spinner_plan.setSelection(changed_plan_position); 
         shouldShowDialog=false; 
         dialogInterface.cancel(); 
        } else { 
         spinner_plan.setSelection(plan_position); 
         dialogInterface.cancel(); 
        } 
       } 
      }); 

    AlertDialog alert = builder.create(); 
    alert.show(); 
} 
+0

Working Perfectly ..ありがとう.. –

関連する問題