마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 버그 : renameTo가 계속 false를 반환하는 현상 [closed]

0 추천
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(data != null) {

            switch (resultCode) {

                case MODIFY_VIDEO:
                    String title = data.getStringExtra("modified_title");

                    String tempPath = arrayList.get(currentPosition).getFilePath();

                    File fileBefore = new File(tempPath, arrayList.get(currentPosition).getTitle());
                    File fileAfter = new File(tempPath, title);

                    if(fileBefore.renameTo(fileAfter)) {
                        arrayList.get(currentPosition).setTitle(title);
                        Toast.makeText(getApplicationContext(), "수정이 완료되었습니다", Toast.LENGTH_SHORT).show();
                        adapter.notifyDataSetChanged();
                    } else {
                        Toast.makeText(getApplicationContext(), "수정에 실패하였습니다.", Toast.LENGTH_SHORT).show();
                    }
                    break;

                default:
                    break;
            }
        } else {
            Toast.makeText(getApplicationContext(), "data is null!", Toast.LENGTH_SHORT).show();
        }
    }

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

public class ModifyVideoActivity extends Activity {

    EditText editText;
    TextView route;
    TextView duration;

    int videoIndex;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.modify_video);

        videoIndex = getIntent().getExtras().getInt("video_index");

        editText = (EditText) findViewById(R.id.titleEditTextByModifyVideo);
        editText.setText(getIntent().getExtras().getString("video_title", ""));

        route = (TextView) findViewById(R.id.routeTextViewByModifyVideo);
        route.setText(getIntent().getExtras().getString("video_route", ""));

        duration = (TextView) findViewById(R.id.durationTextByModifyVideo);
        duration.setText(getIntent().getExtras().getString("video_duration", ""));
    }

    public void onClickedModifyCompleteButton(View v) {

        Intent intent = new Intent();
        intent.putExtra("modified_title", editText.getText().toString());

        setResult(AppMainActivity.MODIFY_VIDEO, intent);
        finish();
    }
}

//밑에 액티비티로 보낼 때
Intent intent = new Intent(AppMainActivity.this,ModifyVideoActivity.class);
intent.putExtra("video_title", videoItemList.get(position).getTitle());
intent.putExtra("video_route", videoItemList.get(position).getFilePath());
intent.putExtra("video_duration",
videoItemList.get(position).getDurationToTime());
intent.putExtra("video_index", position);

startActivityForResult(intent, MODIFY_VIDEO);

버그는 없는데 계속 '수정에 실패했습니다'라고 뜨네요. 가끔가다 false로 반환하는 성질이 renameTo에 있다던데 반복문으로 100번을 돌려도 전부 false로 나와서 renamTo의 성질 때문인 건 아닌 것 같고... 어쩌면 좋을까요ㅠㅠ

질문을 종료한 이유: 답변을 받기 전에 해결 된 문제 중 깜빡해서 종료를 하지 않은 질문이기 때문이다.
주니어Programmer (480 포인트) 님이 2016년 6월 5일 질문
주니어Programmer님이 2016년 8월 19일 closed
...