Search code examples
androidandroid-fragmentactivity

EditText does not work on FragmentActivity in Android


In my Android application I am using a fragment activity for a fragment tabhost. Inside that fragment activity I have used a edittext box which I am not able to edit or enter text in that edittext.

the code for that fragment activity is

package com.example.fragmenttabhost;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;

public class FragmentTab extends android.support.v4.app.Fragment {

private Button btnTest;
private Activity context;
private EditText edtTest;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context=getActivity();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_layout, container, false);
    return v;
}
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);
    context=getActivity();
    btnTest=(Button)context.findViewById(R.id.button1);
    edtTest=(EditText)context.findViewById(R.id.editText1);
    edtTest.setText("Test text");
    final AlertDialog.Builder builder = new AlertDialog.Builder(context);

    builder.setTitle("Test");    
    btnTest.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String str=edtTest.getText().toString();
            builder.setMessage(str);
            builder.show();
        }
    });
  }
  }

Solution

  • Try following code

    Just add your all code on onCreateView() method.

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_layout, container, false);
    
        context=getActivity();
        btnTest=(Button)context.findViewById(R.id.button1);
        edtTest=(EditText)context.findViewById(R.id.editText1);
        edtTest.setText("Test text");
        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
    
        builder.setTitle("Test");    
        btnTest.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String str=edtTest.getText().toString();
                builder.setMessage(str);
                builder.show();
            }
        });
      }
    
        return v;
    }
    

    Hope it will work for you.