意图将信息发回空白

时间:2014-09-16 18:48:28

标签: java android android-intent android-activity

我正在编写一个应用程序来进行调查并得出答案。该应用程序有一个默认问题“你喜欢维京人”,这是正常的。我在功能中添加了编辑问题&按钮,但现在默认都是空白。更糟糕的是,无论我在编辑活动中添加什么内容,它都是空白的!

public class MainActivity extends ActionBarActivity {


    private Button mYesButton;
    private Button mNoButton;
    private Button mResultsButton;
    private TextView mQuestionTextView;
    private Button mEditButton;
    private TextView EditQuestion;
    private Button YesButtonEdit;
    private Button NoButtonEdit;

    int YesTimes;
    int NoTimes;


    public static final String EXTRA_EDIT_QUESTION = "com.example.surveyapp.EditActivity.edit_this_question";

    //private SurveryQuestion[] mQuestionBank = new SurveryQuestion[] {
        //      new SurveryQuestion(R.string.question_1),
        //      new SurveryQuestion()
        //};
    String[] mSurveyArray = {

        new String("hello"), //More questions coming soon!
        new String("Hello1"),
        //new String(R.string.question_1)
    };
    int mCurrentIndex = 0;


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


        mYesButton = (Button)findViewById(R.id.yes_button); //Yes/NoButton modified from LMGTFY app
        mYesButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                        YesTimes += 1;
                        mCurrentIndex = (mCurrentIndex + 1) % mSurveyArray.length;
                            // Coming soon!

            }
        });
        mNoButton = (Button)findViewById(R.id.no_button);
        mNoButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                NoTimes += 1;

            }
        });
        mResultsButton = (Button)findViewById(R.id.result_button);
        mResultsButton.setOnClickListener(new View.OnClickListener() {
            //Here we make toast!
            @Override
            public void onClick(View v) {

                Toast.makeText(getApplicationContext(), //Discovered getApplicationContext from stackoverflow
                    mYesButton + ": " + YesTimes + mNoButton + ": " + NoTimes, Toast.LENGTH_SHORT).show();


            }
        });

        mEditButton = (Button)findViewById(R.id.edit_button); //This is the button that lets you edit the survey
        mEditButton.setOnClickListener(new View.OnClickListener()  {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, EditActivity.class); 
                startActivity(i); 






            }

        });


        Intent intent = getIntent();
        String EditQuestion = intent.getStringExtra("sendBack");
        String YesButtonEdit = intent.getStringExtra("sendBack2");
        String NoButtonEdit = intent.getStringExtra("sendBack3");
        TextView mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 
        Button mYesButton = (Button)findViewById(R.id.yes_button);
        Button mNoButton = (Button)findViewById(R.id.no_button);
        mQuestionTextView.setText(EditQuestion);
        mYesButton.setText(YesButtonEdit);
        mNoButton.setText(NoButtonEdit);





    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

这是您在编辑的回复中添加的第二个活动。

package com.example.surveyapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class EditActivity extends Activity {
    private Button mCompleteButton;
    private EditText mEditText1;
    private EditText mEditText2;
    private EditText mEditText3;

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




     mCompleteButton = (Button)findViewById(R.id.CompleteButton);
     mCompleteButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            EditText mEditText1 = (EditText) findViewById(R.id.editText1);
            EditText mEditText2 = (EditText) findViewById(R.id.editText2);
            EditText mEditText3 = (EditText) findViewById(R.id.editText3);

            Intent i = new Intent(EditActivity.this, MainActivity.class); 
            i.putExtra("SendBack", mEditText1.getText().toString()); //This is supposed to use EXTRA to send back the data
            i.putExtra("SendBack2", mEditText2.getText().toString());
            i.putExtra("SendBack3", mEditText2.getText().toString());
            startActivity(i);

        }

     });
     }
}

我尝试了几种方法,但我什么都没得到。有谁知道答案?

2 个答案:

答案 0 :(得分:0)

我认为问题可能是当你打算startActivity打算创建一个新的MainActivity时,android会识别出已经存在这个活动的实例,所以它只是将它带到前面。

解决这个问题的一种方法是首先制作一个公共方法,用于编辑MainActivity中的字段,然后您可以在将用户发送回之前调用此方法来自编辑活动的此活动。此外,不是创建新活动,只需关闭编辑活动,android将恢复主要活动。

如果这不起作用,请发布测试应用程序时的所有logcat数据。

答案 1 :(得分:0)

要获得干净且清晰的代码,请在onCreate()方法中初始化所有按钮对象。现在尝试将以下代码放在onResume回调方法中,如下所示

@Override
public void onResume()
{
  super.onResume();
  Intent intent = getIntent();
        String EditQuestion = intent.getStringExtra("sendBack");
        String YesButtonEdit = intent.getStringExtra("sendBack2");
        String NoButtonEdit = intent.getStringExtra("sendBack3");
        TextView mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 
        Button mYesButton = (Button)findViewById(R.id.yes_button);
        Button mNoButton = (Button)findViewById(R.id.no_button);
        mQuestionTextView.setText(EditQuestion);
        mYesButton.setText(YesButtonEdit);
        mNoButton.setText(NoButtonEdit);
} 

从onCreate(...)方法中删除此代码并将其放在onResume方法中。当您按下编辑按钮并想要在编辑活动中获取数据时,请从调用活动中执行此操作

 mEditButton = (Button)findViewById(R.id.edit_button); //This is the button that lets you edit the survey
        mEditButton.setOnClickListener(new View.OnClickListener()  {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, EditActivity.class); 
                 i.putExtra("sendBack","send back value");
                 i.putExtra("sendBack2","send back 2 value");
                startActivity(i); 
            }
        });

有了这个,您现在应该能够在EditActivity中修改和传递您想要修改的值