2013-09-21 4 views
0

"뒤로 버튼"과 같은 것이 활동이 어떻게 작동하는지 이해할 수 없습니다. 사용자가 오른쪽 상단에있는 북마크 아이콘을 클릭하면 내 BookmarksActivity 표시과 같이,뒤로 버튼을 사용하면 활동에서 이전 화면이 표시됨

enter image description here

: 다음은

enter image description here

여기

내 주요 활동 스크린 샷 사용자가 북마크를 추가하려면 추가 버튼을 클릭하고 내 BookmarksActivity 클래스에 finish()을 호출하면 화면이 내 MainActivity ...으로 돌아갑니다. 이제 사용자가 클릭 할 수있는

enter image description here

: 이제

enter image description here

그들이 다시이 화면을 사용자에게 제시 북마크 아이콘을 클릭 것,의 사용자가 책갈피를 삭제하려고 가정 해 봅시다 이 화면에서 결과 삭제 버튼 :

enter image description here

,210 지금 사용자가 뒤로 버튼을 눌러 다시 MainActivity의 화면을 얻을 싶어하고 그래서이 화면의 결과로 하나가 예상하는대로 키보드를 제거합니다

enter image description here

그러나 이제 사용자는 계속하고 싶어 메인 화면을 다시 보았으므로 뒤로 버튼을 다시 클릭하면 메인 화면 대신에이 화면이 보일 것으로 예상됩니다!

enter image description here

지금 아직 하나가 표시되어 내 SQLite 데이터베이스에는 북마크가 없습니다. 버튼을 다시 사용자가 클릭 다시 그들이 할 경우, 마지막으로 ...

enter image description here

을 주요 활동 화면을 얻을 ... 그들이 Bookamrk 아이콘을 클릭하는 경우에는 북마크가없는 것을 알 수 있습니다 : 저와 문제의 긴 설명과 함께 베어링에 대한

enter image description here

감사합니다.

다음

가의 삭제가 발생합니다 : 저는 여기에 코드의 관련 단편 생각하는 것입니다

public class BookMarksBaseAdapter extends BaseAdapter { 

    ... 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 
    View vi=convertView; 
    if(convertView==null) 
     vi = inflater.inflate(R.layout.bookmark, null); 

    TextView tv_bookmark_name = (TextView)vi.findViewById(R.id.bookmark_name); 
    TextView tv_bookmark_clock = (TextView)vi.findViewById(R.id.bookmark_clock); 
    Button  deleteButton = (Button)vi.findViewById(R.id.btn_delete_bookmark); 

    final bookMark bookmark = new bookMark(data.get(position).get_bookmark_name(), data.get(position).get_bookmark_track(), data.get(position).get_bookmark_clock(), 0); 
    final String bookmark_name = bookmark.get_bookmark_name(); 
    final int  ibookmark_clock = bookmark.get_bookmark_clock(); 

    // Setting all values in listview 
    tv_bookmark_name.setText(bookmark_name); 
    tv_bookmark_clock.setText(utils.milliSecondsToTimer(ibookmark_clock)); 
    deleteButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Log.d(TAG, "delete button clicked line 73"); 
      db.deleteBookmark(bookmark); 
      v.getContext().startActivity(new Intent(v.getContext(), com.redcricket.myApp.BookMarksActivity.class)); 
     } 
    }); 
    return vi; 
} 

을 그리고 여기 내 BookmarkActivity에서 조각을 onCreate 방법 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    currentChapterTitle  = com.redcricket.myApp.MainActivity.getTrackTitle(0); 
    currentTrack   = com.redcricket.myApp.MainActivity.getCurrentSongIndex(); 
    currentTrackPosition = "00:00:00"; 

    db = new Databasehandler(this); 
    db.getWritableDatabase(); 

    utils = new Utils(); 

    try { 
     currentChapterTitle = com.redcricket.myApp.MainActivity.getCurrentTrackTitle(); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 27"); 
     e.printStackTrace(); 
    } 

    try { 
     icurrentTrackPosition = com.redcricket.myApp.MainActivity.getCurrentTrackPosition(); 
     currentTrackPosition = utils.milliSecondsToTimer(icurrentTrackPosition); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 34"); 
     e.printStackTrace(); 
    } 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.bookmarks); 

    try { 
     new_bookmark_name = (EditText) findViewById(R.id.new_bookmark_name); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 43"); 
     e.printStackTrace(); 
    } 

    try { 
     new_bookmark_name.setText(currentChapterTitle); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 49"); 
     e.printStackTrace(); 
    } 

    try { 
     new_bookmark_clock = (TextView) findViewById(R.id.new_bookmark_clock); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 55"); 
     e.printStackTrace(); 
    } 

    try { 
     new_bookmark_clock.setText(currentTrackPosition); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 61"); 
     e.printStackTrace(); 
    } 

    try { 
     addButton = (Button) findViewById(R.id.btn_add_new_bookmark); 
    } catch (Exception e) { 
     Log.d(TAG, "expection line 43"); 
     e.printStackTrace(); 
    } 
    addButton.setOnClickListener(this);  
    bookMarkList = db.getAllBookmarks(); 
    // add list 
    bookmark_list=(ListView)findViewById(R.id.bookmarks_list); 
    adapter=new BookMarksBaseAdapter(this, bookMarkList, this); 
      bookmark_list.setAdapter(adapter); 

I 어딘가에서 뭔가 잘못하고 있어야합니다. onBackButton 메서드를 재정의하고 마무리를 호출하려고했지만 그다지 도움이되지 않았습니다.가장 좋은 추측은이 라인이 잘못되었다는 것입니다 :

  v.getContext().startActivity(new Intent(v.getContext(), com.redcricket.myApp.BookMarksActivity.class)); 

내가 삭제 버튼을 눌렀을 때이를 호출합니다.

어떤 도움을 환영합니다. 감사! 내가 주를 가정하고

답변

1

한 활동, 도서 마크가 다른 활동과 책 마크 삭제 것은 또 다른 활동이다. 활동에 기록을 남기지 않거나 다른 활동으로 가기 전에 명시 적으로 활동을 끝내지 않으면 활동 스택에 남습니다. 당신의 예에서

사용자가 MainActivity를 간다 -> 다시 MainActivity에 다시 누르면 스택에서 BookMarkActivity을 제거한 통해 BookMarkActivty. 전부다 괜찮아. 다른 예에서

는 사용자가 간다 MainActivity -> BookMarkActivity -> DeleteActivity

그들은 당신이 DeleteActivty을 마무리하거나 새로운 BookMarkActivty을 시작하고 삭제를 클릭하면 여기 질문은?

새로운 북마크 활동을 시작하고 이전 북마크 활동을 마치고 삭제 과정 후 메인 - DeleteBookMark - 북마크 스택으로 끝난 것처럼 보입니다. 그들이 삭제를하고 병력이 없거나 명시 적으로 후 삭제 완료 삭제 작업을 설정하는 선택하면

북마크를 완료하지 마십시오.

+0

답장을 보내 주셔서 감사합니다! DeleteActivity는 없습니다 (어쩌면 하나 있어야합니다).이 클래스'public class BookMarksBaseAdapter extends BaseAdapter'에서 삭제가 발생합니다.이 코드는'bookmark_list = (ListView) findViewById (R.id.bookmarks_list);에 있습니다. adapter = new BookMarksBaseAdapter (this, bookMarkList, this); bookmarkActivity의 onCreate 메서드에서 'bookmark_list.setAdapter (adapter);'를 호출합니다. –

0

Doh! 나는 내가해야 할 일을 알아 냈다. 내가 그렇게 같은 개인 회원으로 내 BookMarksBaseAdapter 클래스의 생성자에 전달 가져옵니다 Activity ...

공용 클래스 BookMarksBaseAdapter가 BaseAdapter를 확장 저장해야 {

private Activity activity; 
... 

BookMarksBaseAdapter (Activity a, ArrayList<bookMark> d) { 
    activity = a; 
    data=d; 
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    utils = new Utils(); 
    db = new Databasehandler(a); 
} 

... 그때 activity.finish() 전화 호출 삭제 버튼이 이렇게 눌려지면 ...

deleteButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      db.deleteBookmark(bookmark); 
      activity.finish(); 
     } 
    }); 
관련 문제