2017-10-25 11 views
-1

リストビューのListViewFragmentを持つフラグメントとEditextを持つ別のEditorFragmentがあります。アクティビティが作成されると、ListViewFragmentが追加されます。リストビュー項目をクリックすると、リストビュークリックされた項目の値をeditextで示すフラグメントEditorFragmentを追加します。問題は、リストビュー内の項目をクリックするとEditorFragmentがtextviewとともに表示されますが、textviewはリストビューのクリックされた項目の値を表示しないことです。問題はどこにあるのか知っていますか?リストビュー項目の値がeditextに表示されない(フラグメントを使用)

主な活動:

public class MainActivity extends AppCompatActivity { 

    ArrayList<String> items= new ArrayList<>(); 

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



     getSupportFragmentManager(). 
       beginTransaction().add(R.id.fragment_list,new ListViewFragment()).commit(); 

    } 
} 

ListViewFragment

public class ListViewFragment extends Fragment { 

    private ListView editor=null; 

    static ArrayList<String> items= new ArrayList<>(); 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View result=inflater.inflate(R.layout.fragment_list, container, false); 

     editor=(ListView) (result.findViewById(R.id.listView)); 

     items.add("Item 1"); 
     items.add("Item 2"); 

     ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, items); 
     editor.setAdapter(arrayAdapter); 



     editor.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 




       EditorFragment editorFragment = new EditorFragment(); 

       Bundle bundle = new Bundle(); 
       bundle.putInt("itemId", i); 
       editorFragment.setArguments(bundle); 

       getFragmentManager().beginTransaction() 
         .replace(R.id.fragment_list, editorFragment).commit(); 
      } 
     }); 

     return result; 
    } 

EditorFragment:

public class EditorFragment extends Fragment { 

     private EditText editor=null; 


     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

      int itemId; 

      Bundle args = getArguments(); 
      if (args != null && args.containsKey("itemId")) { 
       itemId= getArguments().getInt("itemId", -1); 
      } 

      View result=inflater.inflate(R.layout.fragment_editor, container, false); 

      editor=(EditText) (result.findViewById(R.id.editor)); 
      editor.setText("hi"); 
      Toast.makeText(getActivity(), "Test", Toast.LENGTH_LONG); 


      editor.setText(ListViewFragment.items.get(itemId)); 


      return result; 

     } 
    } 

答えて

1

ますので、文字列がハードコードされていても、エラーが1つしか表示されません。

背景が白でtextColorとcolorAccentも白になるように、テーマを上書きしています。

EditTextのtextColorを、表示できる特定の色に変更します。

+0

ありがとうございました。ちなみに、そのokは、theeseのようなフラグメント間のデータを渡しますか?私はインターフェイスを使用するいくつかの例をチェックするので、インターフェイスがあればそれが良いかどうかを知ることはできません。 – JonD

+0

はい、Parcelables引数/バンドルは正しい方法です –

関連する問題