2017-03-26 21 views
-1

무엇이 잘못 되었나요?showDialog (DIALOG_EXIT); 오류

내가에 AlertDialog를 표시 할

- "응용 프로그램 또는 종료는"나에게 오류

Error:(141, 9) error: cannot find symbol method showDialog(int) 

enter image description here

어떻게해야합니까 뛰는?

public class ZavdanFragment extends Fragment { 

    //аргумент індиф. 
    private static final String ARG_ZAMOV_ID = "zamov_id"; 
    //мітка діалогу календаря 
    private static final String DIALOG_DATE = "DialogDate"; 
    //мітка діалогу Фото 
    private static final String DIALOG_FOTO = "DialogFoto"; 
    //private static final String DIALOG_EXIT = "DialogExit"; 
    //призначення цільового фрагменту 
    private static final int REQUEST_DATE = 0; 
    //Контакти 
    private static final int REQUEST_CONTACT = 1; 
    //камера 
    private static final int REQUEST_PHOTO = 2; 
    //тел 
    private static final int REQUEST_PERMISSION = 3; 
    private static final int DIALOG_EXIT = 4; 

    private Zavdannya mZavdannya; 
    private EditText mTitleField; //назва замов. 
    private EditText mPrice; //ціна замов. 
    private Button mDateButton; // дата замов. 
    private CheckBox mVikonanoCheckBox; //виконання замов. 
    private CheckBox mTerminovoCheckBox; //термінове замов. 
    private CheckBox mOplataCheckBox; //оплачене замов. 
    private Button mRepostButton; //відправка звіту 
    private Button mContactButton; //список контактів 
    private ImageButton mPhotoButton; //кнопка фото 
    private ImageView mPhotoView; //фото 
    private File mPhotoFile;//фото 
    private Point mPhotoViewSize;//вікно фото 
    private Callbacks mCallbacks; 
    private Spinner mSpinnerWork; 
    //зателефонувати 
    private Button mCallContact; 
    private String mCallID; 

    //обовязковий інтерфейс для активності-хоста 
    public interface Callbacks { 
     void onZamovUpdated(Zavdannya zavdannya); 
    } 

    //аргументи індетифікатора 
    public static ZavdanFragment newInstance(UUID zamovId) { 
     Bundle args = new Bundle(); 
     args.putSerializable(ARG_ZAMOV_ID, zamovId); 

     ZavdanFragment fragment = new ZavdanFragment(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     mCallbacks = (Callbacks) activity; 
    } 

    //зберегти і передати інд. замов. 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //отримати індетифікатор 
     UUID zamovId = (UUID) getArguments().getSerializable(ARG_ZAMOV_ID); 
     mZavdannya = ZamovLab.get(getActivity()).getZavdannya(zamovId); 
     //збереження місцезнахоження фото 
     mPhotoFile = ZamovLab.get(getActivity()).getPhotoFile(mZavdannya); 
     //menu 
     setHasOptionsMenu(true); 
    } 

    //запис оновлення 
    @Override 
    public void onPause() { 
     super.onPause(); 
     ZamovLab.get(getActivity()).updateZamov(mZavdannya); 
    } 


    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mCallbacks = null; 
    } 

    public void onclick(View v){ 
     showDialog(DIALOG_EXIT); 
    } 

    protected Dialog onCreateDialog(int id) { 
     Dialog dialog = null; 
     android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(getActivity()); 

     switch (id){ 
      case DIALOG_EXIT: 
       return new AlertDialog.Builder(getActivity()) 
         .setTitle(R.string.exit) 
         .setCancelable(false) 
         .setMessage(R.string.dial) 
         .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           android.os.Process.killProcess(android.os.Process.myPid()); 
          } 
         }) 
         .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           dialog.cancel(); 
          } 
         }) 
         .create(); 
     } 
     dialog = builder.show(); 
     return dialog; 
    } 

    //меню видалити 
    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.fragment_zamov, menu); 
    } 

    //дії при виборі меню 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      //видалити 
      case R.id.menu_item_delete_zamov: 
       ZamovLab.get(getActivity()).removeZamov(mZavdannya); 
       getActivity().finish(); 
       return true; 
      case R.id.menu_item_exit: 
       onCreateDialog(DIALOG_EXIT); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 



    @Override 
    // розмітка (замовлення) 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_zamov, 
       container, false); 
     //назва замов. 
     mTitleField = (EditText) v.findViewById(R.id.zamov_title); 
     mTitleField.setText(mZavdannya.getTitle());//оновити назву 
     mTitleField.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(
        CharSequence s, int start, int count, int after) { 
      } 

      // введення заголовку замов. 
      @Override 
      public void onTextChanged(
        CharSequence s, int start, int before, int count) { 
       mZavdannya.setTitle(s.toString()); 
       updateZamov(); 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      } 
     }); 
     //список 
     mSpinnerWork = (Spinner) v.findViewById(R.id.spinner_work); 
     ArrayAdapter<CharSequence> dataAdapter = ArrayAdapter.createFromResource(
       getActivity().getApplicationContext(), R.array.catlist, android.R.layout.simple_spinner_item 
     ); 
     dataAdapter.setDropDownViewResource(android.R.layout 
       .simple_spinner_dropdown_item); 
     mSpinnerWork.setAdapter(dataAdapter); 
     mSpinnerWork.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       //відображення позиції 
       String item = parent.getItemAtPosition(position).toString(); 
       Toast.makeText(parent.getContext(), "Вибрано: " + item, Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 
     //mSpinnerWork.setOnItemSelectedListener((AdapterView.OnItemClickListener) this); 
     /*List<String> work = new ArrayList<String>(); 
     work.add("11a"); 
     work.add("2a"); 
     work.add("5a"); 
     work.add("1a"); 
     work.add("2a"); 
     work.add("3a"); 
     work.add("4a"); 
     work.add("55a"); 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
       getActivity(), android.R.layout.simple_spinner_item, work 
     );*/ 

     //ціна 
     mPrice = (EditText) v.findViewById(R.id.zamov_title_prise); 
     mPrice.setText(mZavdannya.getPrice());//оновити ціну 
     mPrice.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(
        CharSequence s, int start, int count, int after) { 
      } 

      @Override 
      public void onTextChanged(
        CharSequence s, int start, int before, int count) { 
       mZavdannya.setPrice(s.toString()); 
       updateZamov(); 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      } 
     }); 

     //дата 
     mDateButton = (Button) v.findViewById(R.id.zamov_date); 
     updateDate(); 
     //виклик діал. вікна при натискані на дату 
     mDateButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       FragmentManager manager = getFragmentManager(); 
       //виклик newInstance 
       DatePickerFragment dialog = DatePickerFragment 
         .newInstance(mZavdannya.getDate()); 
       dialog.setTargetFragment(ZavdanFragment.this, REQUEST_DATE); 
       dialog.show(manager, DIALOG_DATE); 
      } 
     }); 
     //виконання 
     mVikonanoCheckBox = (CheckBox) v.findViewById(R.id.zamov_vikonano); 
     mVikonanoCheckBox.setChecked(mZavdannya.isVikonano());//оновити прапорець 
     mVikonanoCheckBox.setOnCheckedChangeListener(new CompoundButton 
       .OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(
        CompoundButton buttonView, boolean isChecked) { 
       //Прапорець виконання 
       mZavdannya.setVikonano(isChecked); 
       updateZamov(); 
      } 
     }); 
     //оплаченно 
     mOplataCheckBox = (CheckBox) v.findViewById(R.id.zamov_oplata); 
     mOplataCheckBox.setChecked(mZavdannya.isOplata());//оновити прапорець 
     mOplataCheckBox.setOnCheckedChangeListener(new CompoundButton 
       .OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(
        CompoundButton buttonView, boolean isChecked) { 
       //Прапорець виконання 
       mZavdannya.setOplata(isChecked); 
       updateZamov(); 
      } 
     }); 
     //терміново 
     mTerminovoCheckBox = (CheckBox) v.findViewById(R.id.zamov_terminovo); 
     mTerminovoCheckBox.setChecked(mZavdannya.isTerminovo());//оновити прапорець 
     mTerminovoCheckBox.setOnCheckedChangeListener(new CompoundButton 
       .OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(
        CompoundButton buttonView, boolean isChecked) { 
       //Прапорець виконання 
       mZavdannya.setTerminovo(isChecked); 
       updateZamov(); 
      } 
     }); 
     //звіт про виконання 
     mRepostButton = (Button) v.findViewById(R.id.zamov_repost); 
     mRepostButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent i = new Intent(Intent.ACTION_SEND); 
       i.setType("text/plain"); 
       i.putExtra(Intent.EXTRA_TEXT, getZamovRepost()); 
       i.putExtra(Intent.EXTRA_SUBJECT, 
         getString(R.string.zamov_repost_subject)); 
       i = Intent.createChooser(i, getString(R.string.send_repost)); 
       startActivity(i); 
      } 
     }); 
     //Вибір контакту 
     final Intent pickContact = new Intent(Intent.ACTION_PICK, 
       ContactsContract.Contacts.CONTENT_URI); 
     // pickContact.addCategory(Intent.CATEGORY_HOME);//перевірка фільтра 
     mContactButton = (Button) v.findViewById(R.id.zamov_contact); 
     mContactButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //startActivityForResult(pickContact, REQUEST_CONTACT); 
       //зчитати контакт 
       int permissionCheck = ContextCompat.checkSelfPermission(getActivity(), 
         android.Manifest.permission.READ_CONTACTS); 
       if (permissionCheck != PackageManager.PERMISSION_GRANTED) { 
        ZavdanFragment.this.requestPermissions(new String[]{ 
          android.Manifest.permission.READ_CONTACTS 
        }, REQUEST_PERMISSION); 
       } else { 
        startActivityForResult(pickContact, REQUEST_CONTACT); 
       } 
      } 
     }); 
     if (mZavdannya.getContact() != null) { 
      mContactButton.setText(mZavdannya.getContact()); 
     } 
     //зателефонувати 
     mCallContact = (Button) v.findViewById(R.id.call_contact_button); 
     mCallContact.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mCallID != null) { 
        Cursor cursor = getActivity().getContentResolver().query(
          ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          new String[]{ContactsContract.CommonDataKinds.Phone.CONTACT_ID, 
            ContactsContract.CommonDataKinds.Phone.NUMBER}, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
          new String[]{mCallID}, null); 
        try { 
         cursor.moveToFirst(); 
         String phoneNumber = cursor.getString(cursor.getColumnIndex(
           ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         Intent callContact = new Intent(Intent.ACTION_DIAL, 
           Uri.parse("tel:" + phoneNumber)); 
         startActivity(callContact); 
        } finally { 
         cursor.close(); 
        } 
       } else { 
        Toast.makeText(getActivity().getApplicationContext(), 
          "Контакт не вибраний", 
          Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 

     //захист від контакних програм 
     PackageManager packageManager = getActivity().getPackageManager(); 
     if (packageManager.resolveActivity(pickContact, 
       PackageManager.MATCH_DEFAULT_ONLY) == null) { 
      mContactButton.setEnabled(false); 
     } 

     //кнопка фото 
     mPhotoButton = (ImageButton) v.findViewById(R.id.zamov_camera); 
     final Intent captureImage = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     boolean canTakePhoto = mPhotoFile != null && captureImage 
       .resolveActivity(packageManager) != null; 
     mPhotoButton.setEnabled(canTakePhoto); 
     //вікно фото 
     if (canTakePhoto) { 
      Uri uri = Uri.fromFile(mPhotoFile); 
      captureImage.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
     } 
     mPhotoButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startActivityForResult(captureImage, REQUEST_PHOTO); 
      } 
     }); 
     //фото 
     mPhotoView = (ImageView) v.findViewById(R.id.zamov_photo); 
     // updatePhotoView(); 
     mPhotoView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       FragmentManager manager = getFragmentManager(); 
       PhotoView dialog = new PhotoView(); 
       PhotoView.getPhotoFile(mPhotoFile); 
       dialog.show(manager, DIALOG_FOTO); 
      } 
     }); 

     final ViewTreeObserver observer = mPhotoView.getViewTreeObserver(); 
     observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       boolean isFirstPass = (mPhotoViewSize == null); 
       mPhotoViewSize = new Point(); 
       mPhotoViewSize.set(mPhotoView.getWidth(), mPhotoView.getHeight()); 

       if (isFirstPass) updatePhotoView(); 
      } 
     }); 

     return v; 
    } 

    //реакція на отриману інформацію дати в діал. вікні 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, 
           Intent data) { 
     if (resultCode != Activity.RESULT_OK) { 
      return; 
     } 
     if (requestCode == REQUEST_DATE) { 
      Date date = (Date) data 
        .getSerializableExtra(DatePickerFragment.EXTRA_DATE); 
      mZavdannya.setDate(date); 
      updateZamov(); 
      updateDate(); 
     }//вибрати контакт 
     else if (requestCode == REQUEST_CONTACT && data != null) { 
      Uri contactUri = data.getData(); 
      //визначенняя поля які мають бути повернуті запитом 
      String[] queryFields = new String[]{ 
        ContactsContract.Contacts.DISPLAY_NAME, ContactsContract 
        .Contacts._ID}; 
      //виконання запиту 
      Cursor c = getActivity().getContentResolver() 
        .query(contactUri, queryFields, null, null, null); 

      try { 
       //перевірка отриманого результату 
       if (c.getCount() == 0) { 
        return; 
       } 
       //використання 1 стовбця даних (ім'я контакту) 
       c.moveToFirst(); 
       String contact = c.getString(0); 
       mZavdannya.setContact(contact); 
       updateZamov(); 
       mContactButton.setText(contact); 
       mCallID = c.getString(c.getColumnIndex(ContactsContract. 
         Contacts._ID)); 
      } finally { 
       c.close(); 
      } 

     } else if (requestCode == REQUEST_PHOTO) { 
      updateZamov(); 
      updatePhotoView(); 
     } 
    } 

    private void updateZamov() { 
     ZamovLab.get(getActivity()).updateZamov(mZavdannya); 
     mCallbacks.onZamovUpdated(mZavdannya); 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, 
              int[] grantResults) { 
     if (requestCode == REQUEST_PERMISSION) { 
      if (grantResults.length > 0 && grantResults[0] == PackageManager 
        .PERMISSION_GRANTED) { 
       Intent pickContact = new Intent(Intent.ACTION_DIAL, ContactsContract 
         .Contacts.CONTENT_URI); 
       startActivityForResult(pickContact, REQUEST_CONTACT); 
      } 
     } 
    } 

    private void updateDate() { 
     //формат дати 
     SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE, dd MMM, yyyy"); 
     //оновити дату 
     mDateButton.setText(dateFormat.format(mZavdannya.getDate())); 
    } 

    //4 строчки звіту та з'єднaння їх 
    private String getZamovRepost() { 
     //1 строчка 
     String vikonanoString = null; 
     if (mZavdannya.isVikonano()) { 
      vikonanoString = getString(R.string.zamov_repost_vikonano); 
     } else { 
      vikonanoString = getString(R.string.zamov_repost_nevikonano); 
     } 
     //2 строчка 
     String dataFormat = "EEE,dd MMM"; 
     String dataString = android.text.format.DateFormat.format(
       dataFormat, mZavdannya.getDate()).toString(); 
     //3 строчка 
     String contact = mZavdannya.getContact(); 
     if (contact == null) { 
      contact = getString(R.string.zamov_repost_no_contact); 
     } else { 
      contact = getString(R.string.zamov_repost_contact) + mZavdannya.getContact(); 
     } 
     String price = mZavdannya.getPrice(); 

     String report = getString(R.string.zamov_repost, mZavdannya. 
       getTitle(), dataString, vikonanoString, contact, price); 
     return report; 
    } 

    //оновлення фото 
    private void updatePhotoView() { 
     if (mPhotoFile == null || !mPhotoFile.exists()) { 
      mPhotoView.setImageDrawable(null); 
     } else { 
      /* Bitmap bitmap = PictureUtils.getScaledBitmap(
        mPhotoFile.getPath(), getActivity()); 
      mPhotoView.setImageBitmap(bitmap);*/ 
      Bitmap bitmap = (mPhotoViewSize == null) ? 
        PictureUtils.getScaledBitmap(mPhotoFile.getPath(), getActivity()) : 
        PictureUtils.getScaledBitmap(mPhotoFile.getPath(), 
          mPhotoViewSize.x, mPhotoViewSize.y); 
      mPhotoView.setImageBitmap(bitmap); 
      mPhotoView.setEnabled(true); 
     } 
    } 
} 

답변

0

Fragment에서 showDialog()를 호출하려면 컨텍스트가 필요합니다. 더 많은 정보를 원하시면 방문 here

+0

가 더 이상 빨간색

getActivity().showDialog(DIALOG_EXIT); 

호출하지하려고하지만,이 ShowDialog을 zakreslylo. 대화 상자가 나타나지 않습니다. – Vgaday