2013-04-19 3 views
-1

이 코드는 이벤트 목록을 얻을 수있는 범위까지 작동합니다. 하나를 선택하고 세부 사항으로 가면 업데이트 할 수 있으며 목록으로 돌아갑니다. 첫 번째 항목은 "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,

답변

0

정말로 원하는 것을 얻지 못했지만 버튼 클릭에 문제가 있다고 생각합니까? 내가 맞다면. 이러한 방법 중 하나를 사용할 수 있습니다. 레이아웃에서

1-

android:onClick="MyButton" 

하고 클래스

당신이 당신의 클래스에서 직접 사용할 수 있습니다

public void MyButton(View v) { 
// you may want to perform your clicks here. 
} 

2 추가하려면 버튼이 간단한 코드를 추가

MyButtonId.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
     // you may want to perform your clicks here. 

     } 
    }); 
+0

첫째, 답장을 보내 주셔서 감사합니다. @alex 덕분에 읽기 쉽도록 만들었습니다. 내 후속 조치가 게시되지 않았으므로 다시 요청할 것입니다. XML =

+0

) : 동일한 XML을 사용하는 경우 (android ... : onclick을 = "을 myButton") 는 {Log.d() "...";}) 공공 무효을 myButton (보기 V, NOT에서 onCreate에서,이 시도 내가 얻을 : 자바. lang.IllegalStateException은! 아마 아주 기본적인 그래서 AI는 여전히 뭔가 잘못하고있는 중이 활동의 ​​방법으로 myButton (보기)를 찾을 수 없습니다 내 화면이 동적 목록 조각 지금 3 개 버튼입니다.. 버튼을 선택하고 코드를 호출하기를 원합니다 - 지금은 "log.d ..." 나를 행복하게 해줄거야! – ClarkG

+0

나는 "setListAdapter (lstAdapter);"에 의해 생성 된 목록에서 항목을 클릭하는 동안 내 문제가 있다는 결론에 도달했습니다. 조각으로 처리 할 수 ​​있지만 단추는 사용할 수 없습니다. 왜 두 사람이 다른지, 나는 이해하지 못한다. 더 좋은 방법이 없다면, 다음 몇 일 동안 조각 코드를 활동으로 옮겨 보냈을 것입니다. 그러나 누군가가 내가 setListAdapter를 액티비티와 같은 방식으로 사용할 수 있는지 말해 줄 수 있습니까? – ClarkG

관련 문제