0

Я изучаю программирование мобильных приложений. Я решил преобразовать одно приложение Activity - это фрагмент, но у меня есть проблема. Может быть, некоторые из вас смогут мне помочь.Как включить приложение на основе активности в фрагмент

package pl.edu.ug.aib.studentizerApp.fragment; 

    import android.app.Fragment; 

    import android.os.Bundle; 
    import android.text.Editable; 
    import android.text.TextWatcher; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.ListView; 
    import android.widget.TabHost; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    import org.androidannotations.annotations.EFragment; 

    import java.util.ArrayList; 
    import java.util.List; 

    import pl.edu.ug.aib.studentizerApp.R; 
    import pl.edu.ug.aib.studentizerApp.todoList.DatabaseHandler; 
    import pl.edu.ug.aib.studentizerApp.todoList.Task; 

    @EFragment(R.layout.fragment_todo) 
    public class TODOFragment extends Fragment { 

     EditText zadanieTxt, opisTxt, dataTxt, adresTxt; 
     List<Task> Tasks = new ArrayList<Task>(); 
     ListView TaskListView; 
     DatabaseHandler dbHandler; 
     @Override 
     public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 
      return inflater.inflate(R.layout.fragment_todo, container, false); 
     } 
     @Override 
     public void onStart() { 
      super.onStart(); 


      zadanieTxt = (EditText) getView().findViewById(R.id.txtZadanie); 
      opisTxt = (EditText) getView().findViewById(R.id.txtOpis); 
      dataTxt = (EditText) getView().findViewById(R.id.txtData); 
      adresTxt = (EditText) getView().findViewById(R.id.txtAdres); 
      TaskListView = (ListView) getView().findViewById(R.id.listView); 
      dbHandler = new DatabaseHandler(getActivity().getApplicationContext()); 

      TabHost tabHost = (TabHost) getView().findViewById(R.id.baner); 

      tabHost.setup(); 

      TabHost.TabSpec tabSpec = tabHost.newTabSpec("Dodaj zadanie"); 
      tabSpec.setContent(R.id.tabZadanie); 
      tabSpec.setIndicator("Dodaj Zadanie"); 
      tabHost.addTab(tabSpec); 

      tabSpec = tabHost.newTabSpec("lista"); 
      tabSpec.setContent(R.id.tabListaZadan); 
      tabSpec.setIndicator("Lista"); 
      tabHost.addTab(tabSpec); 

      final Button addBtn = (Button) getView().findViewById(R.id.btnAdd); 
      addBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Task task = new Task(dbHandler.getTaskCount(), String.valueOf(zadanieTxt.getText()), String.valueOf(opisTxt.getText()), String.valueOf(dataTxt.getText()), String.valueOf(adresTxt.getText())); 
        if (!taskExists(task)) { 
         dbHandler.createZadanie(task); 
         Tasks.add(task); 
         Toast.makeText(getActivity().getApplicationContext(), String.valueOf(zadanieTxt.getText()) + " zostało dodane do listy zadań!", Toast.LENGTH_SHORT).show(); 
         return; 
        } 
        Toast.makeText(getActivity().getApplicationContext(), String.valueOf(zadanieTxt.getText()) + " Zadanie już istnieje", Toast.LENGTH_SHORT).show(); 
       } 
      }); 

      zadanieTxt.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { 

       } 

       @Override 
       public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { 
        addBtn.setEnabled(String.valueOf(zadanieTxt.getText()).trim().length() > 0); 
       } 

       @Override 
       public void afterTextChanged(Editable editable) { 

       } 
      }); 



      if (dbHandler.getTaskCount() != 0) 
       Tasks.addAll(dbHandler.getAllTasks()); 

      populateList(); 
     } 

     private boolean taskExists(Task task) { 
      String zadanie = task.getZadanie(); 
      int taskCount = Tasks.size(); 

      for (int i = 0; i < taskCount; i++) { 
       if (zadanie.compareToIgnoreCase(Tasks.get(i).getZadanie()) == 0) 
        return true; 
      } 
      return false; 
     } 

    // public void onActivityResult(int reqCode, int resCode, Intent data) { 
    //  if (resCode == RESULT_OK) { 
    //   if (reqCode == 1) { 
    //    imageUri = data.getData(); 
    //    contactImageImgView.setImageURI(data.getData()); 
    //   } 
    //  } 
    // } 

     private void populateList() { 
      ArrayAdapter<Task> adapter = new TaskListAdapter(); 
      TaskListView.setAdapter(adapter); 
     } 

     private class TaskListAdapter extends ArrayAdapter<Task> { 
      public TaskListAdapter() 
      { 

       super (TODOFragment.this, R.layout.listview_item, Tasks); 
      } 

      @Override 
      public View getView(int position, View view, ViewGroup parent) { 
       if (view == null) 
        view = getActivity().getLayoutInflater().inflate(R.layout.listview_item, parent, false); 

       Task currentTask = Tasks.get(position); 

       TextView zadanie = (TextView) view.findViewById(R.id.zadanie); 
       zadanie.setText(currentTask.getZadanie()); 
       TextView opis = (TextView) view.findViewById(R.id.opis); 
       opis.setText(currentTask.getOpis()); 
       TextView data = (TextView) view.findViewById(R.id.data); 
       data.setText(currentTask.getData()); 
       TextView adres = (TextView) view.findViewById(R.id.adres); 
       adres.setText(currentTask.getAdres()); 

       return view; 
      } 
     } 



    } 

Проблема здесь:

private class TaskListAdapter extends ArrayAdapter<Task> { 
     public TaskListAdapter() 
     { 

      super (TODOFragment.this, R.layout.listview_item, Tasks); 
     } 

Что я могу сделать?

Существует Сообщение Gradle Построить

Information:Gradle tasks [:app:assembleDebug] 
:app:preBuild 
:app:compileDebugNdk UP-TO-DATE 
:app:preDebugBuild 
:app:checkDebugManifest 
:app:preReleaseBuild 
:app:prepareComAndroidSupportAppcompatV72000Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42000Library UP-TO-DATE 
:app:prepareComFacebookAndroidFacebookAndroidSdk3211Library UP-TO-DATE 
:app:prepareComMakeramenRoundedimageview150Library UP-TO-DATE 
:app:prepareDebugDependencies 
:app:compileDebugAidl UP-TO-DATE 
:app:compileDebugRenderscript UP-TO-DATE 
:app:generateDebugBuildConfig UP-TO-DATE 
:app:generateDebugAssets UP-TO-DATE 
:app:mergeDebugAssets UP-TO-DATE 
:app:generateDebugResValues UP-TO-DATE 
:app:generateDebugResources UP-TO-DATE 
:app:mergeDebugResources 
:app:processDebugManifest UP-TO-DATE 
:app:processDebugResources 
:app:generateDebugSources 
:app:compileDebugJava 
Note: Resolve log file to C:\Users\Kisiel\AndroidStudioProjects\Studentizer\app\build\generated\source\apt\androidannotations.log 
Note: Initialize AndroidAnnotations 3.2 with options {androidManifestFile=C:\Users\Kisiel\AndroidStudioProjects\Studentizer\app\build\intermediates\manifests\full\debug\AndroidManifest.xml} 
Note: Start processing for 17 annotations on 32 elements 
Note: AndroidManifest.xml file found with specified path: C:\Users\Kisiel\AndroidStudioProjects\Studentizer\app\build\intermediates\manifests\full\debug\AndroidManifest.xml 
Note: AndroidManifest.xml found: AndroidManifest [applicationPackage=pl.edu.ug.aib.studentizerApp, componentQualifiedNames=[pl.edu.ug.aib.studentizerApp.DrawerActivity_, pl.edu.ug.aib.studentizerApp.FragmentActivity_], permissionQualifiedNames=[android.permission.INTERNET, android.permission.CAMERA, android.permission.WRITE_EXTERNAL_STORAGE, android.permission.ACCESS_FINE_LOCATION, android.permission.ACCESS_COARSE_LOCATION, android.permission.ACCESS_NETWORK_STATE, android.permission.SEND_SMS], applicationClassName=null, libraryProject=false, debugabble=false, minSdkVersion=9, maxSdkVersion=-1, targetSdkVersion=20] 
Note: Found project R class: pl.edu.ug.aib.studentizerApp.R 
Note: Found Android class: android.R 
Note: Validating elements 
Note: Validating with EActivityHandler: [pl.edu.ug.aib.studentizerApp.DrawerActivity, pl.edu.ug.aib.studentizerApp.FragmentActivity] 
Note: Validating with EFragmentHandler: [pl.edu.ug.aib.studentizerApp.fragment.DashboardFragment, pl.edu.ug.aib.studentizerApp.fragment.TimetableFragment, pl.edu.ug.aib.studentizerApp.fragment.TODOFragment, pl.edu.ug.aib.studentizerApp.fragment.WalletFragment] 
Note: Validating with EBeanHandler: [pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerHandler, pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerListAdapter, pl.edu.ug.aib.studentizerApp.skmTimetable.adapter.TrainsListAdapter, pl.edu.ug.aib.studentizerApp.skmTimetable.backgroundTasks.RestBackgroundTrainLeft, pl.edu.ug.aib.studentizerApp.skmTimetable.backgroundTasks.RestBackgroundTrainRight] 
Note: Validating with EViewGroupHandler: [pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerItemView, pl.edu.ug.aib.studentizerApp.skmTimetable.itemView.TrainItemView] 
Note: Validating with ViewByIdHandler: [stanMiasto, stanPogoda, stanC, listTrainLeftLstView, listTrainRightLstView, refreshBtn, restoreGpsBtn, startIdSpinner, endIdSpinner, text, leftTxtView, rightTxtView, leftLayout, rightLayout, drawerLayout, drawerList, icon, name, hour, minute, tip] 
Note: Validating with ClickHandler: [refreshBtnClicked(), restoreGpsBtn()] 
Note: Validating with RestHandler: [pl.edu.ug.aib.studentizerApp.dashboard.DashboardRestClient, pl.edu.ug.aib.studentizerApp.skmTimetable.SkmRestClient] 
Note: Validating with GetHandler: [getTrains(int,int,int), getTrains(int,int,int)] 
Note: Validating with OptionsItemHandler: [drawerToggleSelected(android.view.MenuItem)] 
Note: Validating with RestServiceHandler: [restClient, restClient] 
Note: Validating with RootContextHanlder: [drawerActivity, context, context, activity, activity] 
Note: Validating with NonConfigurationInstanceHandler: [restBackgroundTrainLeft, restBackgroundTrainRight] 
Note: Validating with BeanHandler: [restBackgroundTrainLeft, restBackgroundTrainRight, drawerHandler, adapterLeft, adapterRight, drawerListAdapter] 
Note: Validating with AfterInjectHandler: [init()] 
Note: Validating with AfterViewsHandler: [init(), init(), init(), init()] 
Note: Validating with UiThreadHandler: [publishResult(pl.edu.ug.aib.studentizerApp.skmTimetable.data.TrainsList), publishError(java.lang.Exception), publishWarning(), publishResult(pl.edu.ug.aib.studentizerApp.skmTimetable.data.TrainsList), publishError(java.lang.Exception), publishWarning()] 
Note: Validating with BackgroundHandler: [getTrains(int,int,int), getTrains(int,int,int)] 
Note: Processing root elements 
Note: Processing root elements EActivityHandler: [pl.edu.ug.aib.studentizerApp.FragmentActivity, pl.edu.ug.aib.studentizerApp.DrawerActivity] 
Note: Processing root elements EFragmentHandler: [pl.edu.ug.aib.studentizerApp.fragment.WalletFragment, pl.edu.ug.aib.studentizerApp.fragment.TimetableFragment, pl.edu.ug.aib.studentizerApp.fragment.DashboardFragment, pl.edu.ug.aib.studentizerApp.fragment.TODOFragment] 
Note: Processing root elements EBeanHandler: [pl.edu.ug.aib.studentizerApp.skmTimetable.backgroundTasks.RestBackgroundTrainLeft, pl.edu.ug.aib.studentizerApp.skmTimetable.backgroundTasks.RestBackgroundTrainRight, pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerListAdapter, pl.edu.ug.aib.studentizerApp.skmTimetable.adapter.TrainsListAdapter, pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerHandler] 
Note: Processing root elements EViewGroupHandler: [pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerItemView, pl.edu.ug.aib.studentizerApp.skmTimetable.itemView.TrainItemView] 
Note: Processing root elements RestHandler: [pl.edu.ug.aib.studentizerApp.skmTimetable.SkmRestClient, pl.edu.ug.aib.studentizerApp.dashboard.DashboardRestClient] 
Note: Processing enclosed elements 
Note: Number of files generated by AndroidAnnotations: 15 
Note: Writting following API classes in project: [] 
Note: Generating class: pl.edu.ug.aib.studentizerApp.skmTimetable.itemView.TrainItemView_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.fragment.DashboardFragment_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.fragment.TODOFragment_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.fragment.TimetableFragment_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.fragment.WalletFragment_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.skmTimetable.adapter.TrainsListAdapter_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.skmTimetable.SkmRestClient_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.dashboard.DashboardRestClient_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.DrawerActivity_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.FragmentActivity_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.skmTimetable.backgroundTasks.RestBackgroundTrainLeft_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.skmTimetable.backgroundTasks.RestBackgroundTrainRight_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerHandler_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerItemView_ 
Note: Generating class: pl.edu.ug.aib.studentizerApp.navigationDrawer.DrawerListAdapter_ 
Note: Time measurements: [Whole Processing = 187 ms], [Generate Sources = 100 ms], [Process Annotations = 38 ms], [Validate Annotations = 17 ms], [Find R Classes = 10 ms], [Extract Annotations = 9 ms], [Extract Manifest = 6 ms], 
Note: Finish processing 
Note: Start processing for 0 annotations on 15 elements 
Note: Time measurements: [Whole Processing = 0 ms], 
Note: Finish processing 
Note: Start processing for 0 annotations on 0 elements 
Note: Time measurements: [Whole Processing = 1 ms], 
Note: Finish processing 
C:\Users\Kisiel\AndroidStudioProjects\Studentizer\app\src\main\java\pl\edu\ug\aib\studentizerApp\navigationDrawer\DrawerListAdapter.java 
Error:(36, 19) error: constructor DrawerItem in class DrawerItem cannot be applied to given types; 
required: int,int,Class<? extends Fragment> 
found: String,int,Class<TODOFragment_> 
reason: actual argument String cannot be converted to int by method invocation conversion 
Note: C:\Users\Kisiel\AndroidStudioProjects\Studentizer\app\src\main\java\pl\edu\ug\aib\studentizerApp\fragment\TimetableFragment.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 
Error:Execution failed for task ':app:compileDebugJava'. 
> Compilation failed; see the compiler error output for details. 
Information:BUILD FAILED 
Information:Total time: 5.649 secs 
Information:2 errors 
Information:0 warnings 
Information:See complete output in console 
+0

В чем проблема – 3xplore

+1

В чем же ваша проблема? Попытайтесь выяснить, что вам нужно решить, также покажите нам, есть ли коды ошибок при запуске кода. Вы можете изменить свой вопрос, чтобы расширить его. –

ответ

0

super (TODOFragment.this, R.layout.listview_item, Tasks); ищет контекст, в котором у вас есть TODOFragment.this (которая представляет собой фрагмент и, таким образом, не Context).

Попробуйте вызвать TODOFragment.this.getActivity() вместо TODOFragment.this, и вы должны быть настроены.

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

  • Нет связанных вопросов^_^