나는 SQLite를 사용하고 싶었고 스마트 폰에 올바른 노트 패드 앱이 없기 때문에 메모장 응용 프로그램에서 작동합니다.프래그먼트의 메소드가 액티비티에서 호출 될 때 EditText를 초기화하는 방법은 무엇입니까?
그래서 내 응용 프로그램은 Viewpager하고, 메모를 저장할 새 메모를 작성하거나 현재 메모를 삭제하기위한 메뉴, 간단한 글고있는 조각을 포함하는 활동으로 구성되어있다.
SQLite에 데이터를 저장하기 위해 문자열 제목, 문자열 내용 및 정수 ID를 구성하는 사용자 정의 개체 노트를 만듭니다.
제 문제는 내 데이터베이스에 메모를 저장하는 기능입니다.
Activity의 Action Bar에있는 메뉴로 시작하기 때문에 Save (SD 카드처럼 보이는 두 번째) 버튼을 클릭하면 내 Fragment에서 메소드를 호출하여 이 같은 데이터베이스 :
private void save() {
TabFragment fragment = new TabFragment();
fragment.editNote(arrayListTitle);
}
ArrayList의 모든 주 (내가 TabLayout를 만들 그를 사용)와 내가 메모의 제목을 얻을 그를 통과의 제목을 포함합니다. 내가위한 editNote 방법에 갈 때 나는 오류가 나타납니다
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootview = (ViewGroup) inflater.inflate(R.layout.fragment_tab, container, false);
editText1 = rootview.findViewById(R.id.editText1);
manager = new NoteManager(getActivity());
manager.open();
Bundle args = getArguments();
position = args.getInt("0");
arrayListContent = args.getStringArrayList("1");
editText1.setText(arrayListContent.get(position));
return rootview;
}
public void editNote(ArrayList<String> arrayListTitle) {
title_edit = arrayListTitle.get(position);
content_edit = editText1.getText().toString();
Note note = manager.getNote(position + 1);
note.setTitle(title_edit);
note.setContent(content_edit);
manager.modNote(note);
}
:
그래서 내 조각의 코드가
E/AndroidRuntime: FATAL EXCEPTION: main
Process: fr.pensebete, PID: 24165
java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
at fr.pensebete.TabFragment.editNote(TabFragment.java:50)
at fr.pensebete.MainActivity.save(MainActivity.java:130)
at fr.pensebete.MainActivity.onOptionsItemSelected(MainActivity.java:101)
at android.app.Activity.onMenuItemSelected(Activity.java:3369)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:368)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:65)
at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:202)
at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:780)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:963)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:624)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:150)
at android.view.View.performClick(View.java:6213)
at android.widget.TextView.performClick(TextView.java:11074)
at android.view.View$PerformClick.run(View.java:23645)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
내가 아는을 그것 글고 초기화되지 않기 때문에 내가 때문에 editNote() 메서드 만 호출하고 OnCreateView는 호출되지 않습니다.
어떻게 Activity에서 EditNote() 메서드를 호출하고 EditText 및 변수 위치를 올바르게 (OnCreateView 메서드 에서처럼) 초기화 할 수 있습니까? 3 시간이 지난 지금부터 검색을하면 해결책이 없기 때문에 나를 도와 줄 수 있습니까?
시간과 도움에 감사 드리며, 저의 영어 실력을 유감스럽게 생각합니다. 내가 실현이 질문을 쓰는 동안 나는 내 활동의 방법에 새로운 TabFragment을하기 때문에 어쩌면 그 :
편집
private void save() {
TabFragment fragment = new TabFragment();
fragment.editNote(arrayListTitle);
}
어쩌면 내가 수신하거나 이미 생성 된 현재의 단편을 발견해야한다,하지만 난하지 않습니다 그렇게하는 법을 아십시오. 도움말!
새 조각을 만드는 대신 조각 인스턴스를 사용하십시오. –
네, 생각해 봅니다. 어떻게 할 수 있습니까? –
내 대답을 참조하십시오. –