2016-04-08 23 views
9

Ben android için yeni. Bir parça kullanıyorum. OnResult() yönteminde bir hata alıyorum. Benim parçamda kullanabileceğiniz setResult (RESULT_OK, data) için bir ikame yöntemine ihtiyacım var. Lütfen yardım et.Parçada setResult() gibi bir yöntem var mı?

CalendarFragment

package app.pal.study.samplestudy; 

import android.app.Fragment; 
import android.content .Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ListView; 
import java.util.Date; 
import java.util.List; 

public class CalendarFragment extends Fragment { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_calendar, container, false); 
    return rootView; 
} 


@Override 
public void onResume() { 
    super.onResume(); 
    refresh(); 
} 

private void refresh() { 
    CalendarEventDataSource dataSource = new CalendarEventDataSource(getActivity()); 
    dataSource.openReadOnlyDB(); 
    final List<CalendarEvent> calendarEvents = dataSource.getAllEvents(); 
    dataSource.close(); 
    CalAllEventsListAdapter adapter = new CalAllEventsListAdapter(calendarEvents); 
    ListView listView = (ListView) getView().findViewById(R.id.all_event_list); 
    listView.setAdapter(adapter); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     end(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 



public void onBackPressed() { 
    end(); 
} 

private void end() { 
    Intent data = new Intent(); 
    data.putExtra(Constants.DATE_KEY, (Date)(getArguments().get(Constants.DATE_KEY))); 
    setResult(RESULT_OK, data); 
    } 
} 
+0

hata neydi ..? –

+1

setResult, startActivityForResult tarafından çağrılan etkinliklerde kullanılır. Bir arayüz geri çağırma kullanmalısınız. – Nanoc

+0

@AbhishekPatel Hata: (58, 19) hatası: sembol değişkeni bulamıyor RESULT_OK – PersianBlue

cevap

15

Sen fragmanı sahibi faaliyeti üzerinde çağırmalıdır:

getActivity().setResult(Activity.RESULT_OK, data) 

Ayrıca size aktiviteyi bitirmek isteyebilirsiniz:

getActivity().finish(); 
+0

RESULT_OK hala hata veriyor – PersianBlue

+0

'bir hata atar - ne demek istiyorsun? Derleyici hata gösterebilir, bu derleme sırasında. Yürütme sırasında istisna atılabilir - o zaman çağrı yığınının logcat'e bakması gerekir. – marcinj

+0

belki de etkinlik parçanızı başlattığınızda startActivityForResult kullanın – MojioMS

1

Kullanım

Başka bir parçası adresinin fragman başlayarak Eğer 210
1

bunu kullanın o ..

getActivity().setResult(Activity.RESULT_OK, data); 
5

size yardım olabilir. senin Parçası başlatırken

/** 
* Optional target for this fragment. This may be used, for example, 
* if this fragment is being started by another, and when done wants to 
* give a result back to the first. The target set here is retained 
* across instances via {@link FragmentManager#putFragment 
* FragmentManager.putFragment()}. 
* 
* @param fragment The fragment that is the target of this one. 
* @param requestCode Optional request code, for convenience if you 
* are going to call back with {@link #onActivityResult(int, int, Intent)}. 
*/ 

public void setTargetFragment(Fragment fragment, int requestCode) { 
} 

:

Sen kullanmak gerekir. Bunun gibi

:

Fragment newFragment = new YourFragment(); 
newFragment .setTargetFragment(this, SOME_REQUEST_INT); 

Ve sonra, YourFragment

Intent data = new Intent(); 
data.putExtra(Constants.DATE_KEY, (Date)(getArguments().get(Constants.DATE_KEY))); 
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent); 

Ya

getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_CANCELED, null); 
İlgili konular