이 코드는 이벤트 목록을 얻을 수있는 범위까지 작동합니다. 하나를 선택하고 세부 사항으로 가면 업데이트 할 수 있으며 목록으로 돌아갑니다. 첫 번째 항목은 "ADD"버튼이되고 두 번째 항목은 "Exit"기능이됩니다. 그러나 나는 진짜 버튼을 원한다.버튼을 작동 시키려면 어떻게해야합니까?
실제 버튼을 추가하고 시도한 후에 실제 버튼을 처리하기위한 코드에 오류가 있거나 충돌 만 발생했습니다. 내 최근이 사이트에서 직접 복사 : 이중 사이의 코드에서
이How to handle button clicks using the XML onClick within Fragments
봐 "****". 나는 무엇이 잘못 되었는가?
아래 XML이 포함되었습니다. 문제가 있다고 생각합니다.
EventListFragment.java
public class EventListFragment extends ListFragment implements OnClickListener, LoaderCallbacks<Cursor> { private SimpleCursorAdapter mAdapter; List strRecId = new ArrayList(); private ListAdapter lstAdapter; private Button btn_Add; List strRecord = new ArrayList(3); List strFields = new ArrayList(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // View myFragmentView = inflater.inflate(R.layout.event_list); //-----------------------------------------------------; // ALSO LOOK FOR "INITRUN" BELOW AND COMMENT OUT STATEMENT; // IN TWO PLACES; //-------------------------------------------------------; // BELOW READS FROM DATABASE AND DISPLAYS EVENTNAME; // THEN ALLOWS UPDATE OF THEM ABD INSERT FROM EXISTING; // Log.d("EventLst","X onCrt: x01 START"); String[] strItems = new String[] { EventProvider.COLUMN_EVENTNAME }; Log.d("EventLst","X onCrt: x01strI:" + strItems[0]); int[] iCnt = new int[] { R.id.text1 }; mAdapter = new SimpleCursorAdapter(getActivity(),R.layout.event_row, null, strItems, iCnt, 0); Log.d("EventLst","X onCrt: x02 START"); setListAdapter(mAdapter); getLoaderManager().initLoader(0, null, this); Log.d("EventLst","X onCrt: x03 START"); } //----> backto public void onCreate // //------------------------------------------------------- // Log.d("EventLst","X onCrt: DONE"); //--------------------------------------------------------- @Override public void onActivityCreated(Bundle savedInstanceState) //* The activity (not fragment's) onCreate() method returns and calls //* onActivityCreated() callback { super.onActivityCreated(savedInstanceState); Log.d("EventLst","S onActCrtd"); //* The ListFragment supports showing a message when the list is empty. Uses a //* value of R.string.loadingmsg - Add to strings.xml setEmptyText(getResources().getString(R.string.loadingmsg)); registerForContextMenu(getListView()); setHasOptionsMenu(true); Log.d("EventLst","X onActCrtd"); } //*--------------------------------------------------------------- //* START EDIT ACTIVITY: // user clicked in list, start edit view // startActivity (...) starts edit activity, passing id = n // where "n" is (record key) id from list @Override public void onListItemClick(ListView l,View V, int position, long id) { super.onListItemClick(l, V, position, id); Log.d("EventLst","S onLsItmCk" + ";P:" + position + ";I:" + id); long lgRecN = 0; // id is the position in the list of activities, // we will use it to get the RowId of this record in DB if (id == 1) { android.os.Process.killProcess(android.os.Process.myPid()); } if (id > 0) { String strRecN = (String) strRecId.get((int) id-1); lgRecN = Long.parseLong(strRecN); } else { lgRecN = 0; }; startActivity(new Intent(getActivity(), EventEditActivity.class) .putExtra(EventProvider.COLUMN_ROWID, lgRecN)); // Log.d("EventLst","X onLsItmCk" + ";I:" + id); } //****************************************************; //****************************************************; // This was copied precisely from: // https://stackoverflow.com/questions/6091194/how-to-handle-button-clicks-using- // the-xml-onclick-within-fragments/7969020#7969020 // then shangrd "StartButton" to btn_Exit // I had errors //@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.event_list, container, false); Log.d("EventLst","S creatrView"); Button b = (Button) v.findViewById(R.id.btn_Add); b.setOnClickListener(this); Log.d("EventLst","S onLsItmCk" + v); return v; } @Override public void onClick(View v) { Log.d("EventLst","S onclkBtn" + v); } //**************************************************; //***************************************************; @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Log.d("EventLst","S onVwCrt"); setEmptyText(getResources().getString(R.string.loadingmsg)); registerForContextMenu(getListView()); Log.d("EventLst","X onVwCrt"); }
event_list.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:name="com.dummies.android.taskreminder.EventListFragment" > <Button android:id="@+id/btn_Add" android:layout_width="50dp" android:layout_height="30dp" android:textSize="12dp" android:padding="1dip" android:text="@string/add" /> <Button android:id="@+id/btn_Exit" android:layout_width="50dp" android:layout_height="30dp" android:textSize="12dp" android:padding="1dip" android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/btn_Add" android:text="@string/exit" /> <Button android:id="@+id/btn_Other" android:layout_width="50dp" android:layout_height="30dp" android:textSize="12dp" android:padding="1dip" android:layout_marginLeft="5dp" android:layout_toRightOf="@+id/btn_Exit" android:text="@string/other" /> <fragment android:name="com.dummies.android.taskreminder.EventListFragment" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/btn_Add" /> </RelativeLayout>
event_row.xml
012,388,
첫째, 답장을 보내 주셔서 감사합니다. @alex 덕분에 읽기 쉽도록 만들었습니다. 내 후속 조치가 게시되지 않았으므로 다시 요청할 것입니다. XML =
) : 동일한 XML을 사용하는 경우 (android ... : onclick을 = "을 myButton") 는 {Log.d() "...";}) 공공 무효을 myButton (보기 V, NOT에서 onCreate에서,이 시도 내가 얻을 : 자바. lang.IllegalStateException은! 아마 아주 기본적인 그래서 AI는 여전히 뭔가 잘못하고있는 중이 활동의 방법으로 myButton (보기)를 찾을 수 없습니다 내 화면이 동적 목록 조각 지금 3 개 버튼입니다.. 버튼을 선택하고 코드를 호출하기를 원합니다 - 지금은 "log.d ..." 나를 행복하게 해줄거야! – ClarkG
나는 "setListAdapter (lstAdapter);"에 의해 생성 된 목록에서 항목을 클릭하는 동안 내 문제가 있다는 결론에 도달했습니다. 조각으로 처리 할 수 있지만 단추는 사용할 수 없습니다. 왜 두 사람이 다른지, 나는 이해하지 못한다. 더 좋은 방법이 없다면, 다음 몇 일 동안 조각 코드를 활동으로 옮겨 보냈을 것입니다. 그러나 누군가가 내가 setListAdapter를 액티비티와 같은 방식으로 사용할 수 있는지 말해 줄 수 있습니까? – ClarkG