【问题标题】:Receiving data using Intent使用 Intent 接收数据
【发布时间】:2019-10-09 17:57:47
【问题描述】:

我正在尝试使用 Intent 从我的 NoteActivity 发送一些数据到 MainActivity 类的方法 (addNote())

 public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager layoutManager;
    ArrayList<String> notes = new ArrayList<String>();





    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.activity_main);
    notes.add("sql");

    //Intent intent = new Intent(NotePad.this,MainActivity.class);
    //intent.putExtra(EXTRA_MESSAGE,str);
    //startActivity(intent); 

}

void addNote()
{

    Intent intent = this.getIntent();
    String title = intent.getStringExtra(NotePad.EXTRA_MESSAGE).toString();
    notes.add(title);
    Log.d("Data","inside saveData");
    Log.d("Data","title: "+title);

   }

 }



 NoteActivity
 public class NotePad extends AppCompatActivity {

public static final String EXTRA_MESSAGE = "key";

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


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

    final FloatingActionButton button = (FloatingActionButton)findViewById(R.id.save_button);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

           SaveData();
        }
    });
}

public void SaveData()
{
    FileOutputStream outputStream;

    try {
        ***Some code***

        SendData();
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}

public void SendData()
{
    EditText editText = findViewById(R.id.textView3);

  final String str = editText.getText().toString();

    Intent intent = new Intent(NotePad.this,MainActivity.class);
    intent.putExtra(EXTRA_MESSAGE,str);
    startActivity(intent);

  }
 }

当我在我的 onCreate() 方法中接收 (str) 作为(title) 时,一切正常并且我收到数据,但是当我尝试在我的 addNote() 方法中接收 Intent 时,我没有收到 Intent数据

【问题讨论】:

  • mainActivity 正在启动 NodeActivity 吗?为什么在 saveData 方法中使用 FileOutputStream?请更准确地解释
  • 你有没有从 onCreate() 方法调用 addNote() 方法。 ???

标签: android android-intent


【解决方案1】:

从 onCreate 方法调用你的方法 addNote()。

   public class MainActivity extends AppCompatActivity {

        private RecyclerView recyclerView;
        private RecyclerView.Adapter mAdapter;
        private RecyclerView.LayoutManager layoutManager;
        ArrayList<String> notes = new ArrayList<String>();





        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.activity_main);
        notes.add("sql");

        //Intent intent = new Intent(NotePad.this,MainActivity.class);
        //intent.putExtra(EXTRA_MESSAGE,str);
        //startActivity(intent); 

          addNote();

    }

    void addNote()
    {

        Intent intent = this.getIntent();
        String title = intent.getStringExtra(NotePad.EXTRA_MESSAGE).toString();
        notes.add(title);
        Log.d("Data","inside saveData");
        Log.d("Data","title: "+title);

       }

     }

【讨论】:

  • 但是为什么呢?我的 Intent 调用肯定在工作,即当我调用 Intent 时我的 Activity 正在切换,但没有收到数据
  • 您的活动可以通过意图切换,但您将在 addNote() 方法中接收数据。因此,要获取数据,您必须从第二个活动中调用此方法,否则不会返回任何数据。
猜你喜欢
  • 2017-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2021-04-24
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多