2013-01-20 3 views
1

Activity를 단편으로 변환하려고 시도하고 있으며이 방법을 재정의 할 수 없습니다 : onCreateOptionsMenu, onOptionsItemSelected, onContextItemSelected. , 일부 가져 오기 명령문이 누락 되었습니까? 무엇을 해야할지 모르겠군요. 내 수업 파일입니다. package com.wts.ui; Fragment 또는 SherlockFragment -은 조각에서 onContextItemSelected를 재정의 할 수 없습니다.

import java.util.Date; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.ContextMenu; 
import android.view.ContextMenu.ContextMenuInfo; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemLongClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 

public class MainFragment extends Fragment { 

    protected final static int REQUEST_CODE = 1; 

    public static WordsDBAdapter dbAdapter; 
    private CustomAdapter cDataAdapter; 
    private Button button; 
    private EditText editWord; 
    private EditText editTranslate; 
    private ListView listView; 
    private String selectedWord; 
    private Cursor cursor; 

    // context menu 
    private final static int IDM_EDIT = 101; 
    private final static int IDM_DELETE = 102; 
    private final static int IDM_INFO = 103; 

    // options menu 
    private static final int IDM_ABOUT = 201; 
    private static final int IDM_EXIT = 202; 
    private static final int IDM_SETTINGS = 203; 
    private static final int IDM_QUESTION = 204; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 

     super.onActivityCreated(savedInstanceState); 

     dbAdapter = new WordsDBAdapter(getActivity()); 
     dbAdapter.open(); 

     displayListView(); 
     registerForContextMenu(listView); 

     // ================ListView onLongClick======================== 
     listView.setOnItemLongClickListener(new OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       cursor = (Cursor) listView.getItemAtPosition(arg2); 
       selectedWord = cursor.getString(WordsDBAdapter.ID_COL); 
       return false; 
      } 
     }); 

     // ================Button onClick======================== 
     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       String word = editWord.getText().toString(); 
       String translate = editTranslate.getText().toString(); 

       if (word.length() > 0 && translate.length() >= 0) { 
        Cursor cursor = dbAdapter.fetchWordsByName(word);// chek is 
                     // word 
                     // repeat 

        if (cursor.moveToFirst()) { 
         Toast.makeText(getActivity().getApplicationContext(), 
           getResources().getString(R.string.word_exist), 
           Toast.LENGTH_SHORT).show(); 
        } else if (!CheckWordInput(word) 
          || !CheckTranslateInput(translate)) { 
         Toast.makeText(
           getActivity().getApplicationContext(), 
           getResources().getString(
             R.string.incorrect_input), 
           Toast.LENGTH_SHORT).show(); 
        } else { 
         dbAdapter.insertWord(word, translate, " ", 
           String.valueOf(false), 0, 0, new Date()); 
         displayListView(); 

         editWord.setText(""); 
         editTranslate.setText(""); 
        } 
       } 
      } 
     }); 
    } 

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

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

     button = (Button) view.findViewById(R.id.buttonAddWord); 
     listView = (ListView) view.findViewById(R.id.listWords); 
     editWord = (EditText) view.findViewById(R.id.editWord); 
     editTranslate = (EditText) view.findViewById(R.id.editTranslate); 

     return view; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 
     // setContentView(R.layout.activity_main); 

    } 

    @Override 
    public void onCreateContextMenu(ContextMenu menu, View v, 
      ContextMenuInfo menuInfo) { 
     if (v.getId() == R.id.listWords) { 
      String[] menuItems = getResources().getStringArray(
        R.array.contextMenuItems); 

      menu.add(Menu.NONE, IDM_EDIT, Menu.NONE, 
        menuItems[StartActivity.CONTEXT_MENU_EDIT]); 
      menu.add(Menu.NONE, IDM_INFO, Menu.NONE, 
        menuItems[StartActivity.CONTEXT_MENU_INFO]); 
      menu.add(Menu.NONE, IDM_DELETE, Menu.NONE, 
        menuItems[StartActivity.CONTEXT_MENU_DELETE]); 

     } 
    } 

    // 
    @Override 
    public boolean onContextItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case IDM_EDIT: { 
      Intent intent = new Intent(getActivity(), EditActivity.class); 
      intent.putExtra(getResources().getString(R.string.fstRow), 
        cursor.getString(WordsDBAdapter.WORD_COL)); 
      intent.putExtra(getResources().getString(R.string.scndRow), 
        cursor.getString(WordsDBAdapter.TRANS_COL)); 
      intent.putExtra(getResources().getString(R.string.thrdRow), 
        cursor.getString(WordsDBAdapter.DESC_COL)); 

      startActivityForResult(intent, REQUEST_CODE); 
     } 
      break; 
     case IDM_DELETE: 
      dbAdapter.deleteWord(selectedWord); 
      displayListView(); 
      break; 
     case IDM_INFO: { 
      Intent intent = new Intent(getActivity(), InformationActivity.class); 
      for (int i = 1; i <= InformationActivity.nListItems; i++) 
       intent.putExtra(String.valueOf(i), cursor.getString(i)); 

      startActivity(intent); 
     } 
      break; 
     default: 
      return super.onContextItemSelected(item); 

     } 
     return true; 
    } 

    private void displayListView() { 
     // Cursor cursor = dbAdapter.fetchAllTranslated(); 
     Cursor cursor = dbAdapter.fetchAllTranslated(); 

     String[] columns = new String[] { WordsDBAdapter.KEY_WORD, 
       WordsDBAdapter.KEY_TRANSLATION, WordsDBAdapter.KEY_SUCCEEDED, }; 

     int[] to = new int[] { R.id.textViewTranslate, R.id.textViewWord, 
       R.id.textViewSuccessPoints }; 

     cDataAdapter = new CustomAdapter(getActivity(), R.layout.word_info, 
       cursor, columns, to); 

     listView.setAdapter(cDataAdapter); 
    } 

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.activity_main, menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case IDM_ABOUT: { 
      Intent intent = new Intent(getActivity(), AboutActivity.class); 
      startActivity(intent); 
      break; 
     } 
     case IDM_EXIT: { 
      Intent intent = new Intent(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_HOME); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
      getActivity().finish(); 
      break; 
     } 
     case IDM_SETTINGS: { 
      Intent intent = new Intent(getActivity(), SettingsActivity.class); 
      startActivity(intent); 
      break; 
     } 
     case IDM_QUESTION: { 
      if (!StartActivity.isMainActivitySart) 
       getActivity().onBackPressed(); 
      else { 
       Intent intent = new Intent(getActivity(), 
         QuestionActivity.class); 
       startActivity(intent); 
      } 
     } 
      break; 
     } 
     return true; 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE) { 
      if (intent.hasExtra(getResources().getString(R.string.fstRow))) { 
       dbAdapter.changeValue(
         selectedWord, 
         intent.getExtras().getString(
           getResources().getString(R.string.fstRow)), 
         intent.getExtras().getString(
           getResources().getString(R.string.scndRow)), 
         intent.getExtras().getString(
           getResources().getString(R.string.thrdRow)), 
         null, null, null, null); 
       displayListView(); 
      } 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     SettingsManager.setPreferedLanguage(getActivity());// set language 
     displayListView(); 
    } 

    public static boolean CheckTranslateInput(String str) { 
     Pattern inputPattern = Pattern.compile("[\\p{L} -]{0,25}"); 
     Matcher inputMatcher = inputPattern.matcher(str); 
     return inputMatcher.matches(); 
    } 

    public static boolean CheckWordInput(String str) { 
     Pattern inputPattern = Pattern.compile("[\\p{L} -]{1,25}"); 
     Matcher inputMatcher = inputPattern.matcher(str); 
     return inputMatcher.matches(); 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     dbAdapter.close(); 
    } 
} 

답변

1

당신은 당신의 조각이 원하는 것에 대해 생각해야?

당신이 가져 : - 그들은 ActionBarSherlock의의 클래스입니다 Menu & 친구들이 지금 무엇을 Fragment 요구 다른 클래스이기 때문에

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 

그래서를 재정의 무시하지 않습니다.

대신 SherlockFragment을 확장하면 무시가 작동해야하며 ActionBarSherlock (태그에 기반한 경우)을 확장하는 경우 SherlockFragment을 확장하는 것이 좋습니다. 정기적 조각으로 이것을 유지하기 위해, 다음 가져 오기를 원하는 경우

:

android.view.Menu 
android.view.MenuItem 
android.view.MenuInflater 
+1

대단히 감사합니다! –

관련 문제