Pregunta

I am having a problem with passing strings from a fragment to another activity. I have tried numerous methods of passing them using intents (eg normal extras, bundles) , but the extras are always null in the activity.

I have looked at

http://www.vogella.com/articles/AndroidIntent/ But no change http://developer.android.com/training/basics/firstapp/starting-activity.html This method of passing the data also doesn't work

Other similar questions on stackoverflow - but these are not quite the same

What I'm trying to do is get the text that was input in the two EditTexts in the fragment, and then pass that text to the activity where the two EditTexts there are filled with the same text. The problem is that nothing appears in the the two EditTexts in the activity. I know that the EditTexts in the fragments are working because a can create a notification using them.

My code: I have removed things I think are unneccessary eg adding the fragment to a navigation drawer layout. Please excuse missing brackets - I have removed a lot of code and some may have been removed accidentally! :-)

This is the fragment where I create an intent:

// Package declaring and importing stuff

public class QuickNoteFragment extends Fragment implements OnClickListener { 

// Removed some stuff


    EditText body;
    EditText title;
    Button create;
    int counter = 0;

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


        body = (EditText) rootView.findViewById(R.id.qn_et_body);
        title = (EditText) rootView.findViewById(R.id.qn_et_title);

        create.setOnClickListener(this); 


        // Removed stuff

        getActivity().setTitle(noter_activity); // Part of navigation drawer?
        return rootView;
        }

    @Override
    public void onClick(View v) {

        // TODO Auto-generated method stub



         switch (v.getId()) { 

         case R.id.qn_b_create:

        String content_text = body.getText().toString();
        String content_title = title.getText().toString();

                if (content_title.length() >=1){

            Context context = v.getContext();

// This intent does not seem to work
            Intent eIntent = new Intent(context, QuickNoteEdit.class);
            eIntent.putExtra("eTitle", content_title);
            eIntent.putExtra("eText", content_text);
            PendingIntent EditPendingIntent = PendingIntent.getActivity(context, 0, eIntent, 0);

// This intent works comletely. This is called when a notification action button is pressed
            Intent qnCancel = new Intent();
            qnCancel.setAction("com.RiThBo.noter.qnCancelBroadcast");
            Bundle extras = new Bundle();
            extras.putInt("valueOfCounter", counter);  
            qnCancel.putExtras(extras);  
            startBroadcast(qnCancel);
            PendingIntent pQnCancel = PendingIntent.getBroadcast(this.getActivity(), 0, qnCancel, 0);

// Creates Notification


                } else { 
            // Do something
                }

         case R.id.*** // Does something else

         }
    }

    private void startBroadcast(Intent qnCancel) { // This is part of the correctly working intent
        // TODO Auto-generated method stub

    }

}

This is the activity where I'm trying to get the extras

// Removed package and imports

public class QuickNoteEdit extends Activity implements OnClickListener {

    EditText body;
    EditText title;

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.quicknote_edit);

        variableConnector(); // This gets the id for all the items in the xml

        Intent intent = getIntent();
        String gotTitle = intent.getStringExtra("content_title"); // This is where I think it equals null.  Because the 
            String gotBody = intent.getStringExtra("content_text");

        title.setText(gotTitle); 
        body.setText(gotBody);

        }

        private void variableConnector() {
            // TODO Auto-generated method stub

            body = (EditText) findViewById(R.id.qne_et_body);
            title = (EditText) findViewById(R.id.qne_et_title);

        }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();

    }


}

Thank you

¿Fue útil?

Solución

You're putting:

eIntent.putExtra("eTitle", content_title);
eIntent.putExtra("eText", content_text);

and when you read them:

String gotTitle = intent.getStringExtra("content_title");
String gotBody = intent.getStringExtra("content_text");

You need to match the keys ... put "eTitle" and read "eTitle", not "*content_title*"!

Otros consejos

You're tagging your extras with "eTitle" and "eText" and trying to retrieve them with "content_title" and "content_text".

Switch to

String gotTitle = intent.getStringExtra("eTitle");  
String gotBody = intent.getStringExtra("eText");

it should work.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top