使用意图传递来自其他活动的数据并在列表视图中显示

时间:2016-10-08 19:25:26

标签: java android

我是Android新手,我创建了两个活动,其中主要活动包含一个按钮,在第二个活动中转到secondActivity,其中用户输入名称,数据使用意图返回主活动。我面临的问题是我想在listview中显示数据

MainActivity.java

public class MainActivity extends Activity {
Button addcontact;
ListView listview;
//TextView name;
ArrayAdapter<String> listAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listview = (ListView) findViewById(R.id.listView1);
    TextView name = (TextView) findViewById(R.id.txtname);
    addcontact = (Button) findViewById(R.id.addbtn);

    addcontact.setOnClickListener(new View.OnClickListener() {
        @Override
            public void onClick(View v) {
            Intent i = new Intent(MainActivity.this, SecondActivity.class);
            startActivityForResult(i, 1);
            savedata();
        }
    });
}

private void savedata() {
    Intent intent = getIntent();
    String fName = intent.getStringExtra("fname");
    List<String> ListElements = new ArrayList<String>(Arrays.asList(fName));
    ArrayAdapter<String> adapter = new ArrayAdapter<String>       (MainActivity.this,android.R.layout.simple_list_item_1, ListElements);     
    listview.setAdapter(adapter);
}

}

SecondActivity.java

公共类SecondActivity扩展了Activity {

EditText edname;
Button addbtn;

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

    edname =(EditText) findViewById(R.id.edname);
    addbtn = (Button) findViewById(R.id.savebtn);

    addbtn.setOnClickListener(new View.OnClickListener() {
     @Override
    public void onClick(View v) {
    Intent intent = new Intent(SecondActivity.this,   MainActivity.class);
    intent.putExtra("fname", edname.getText().toString());
    startActivity(intent);
    }
  });

} }

1 个答案:

答案 0 :(得分:0)

我建议你不要重新创建你的第一个活动。而不是那种方法,使用 startActivityForResult()

简而言之 - 开始另一项活动并不一定是单向的。您还可以启动另一项活动并收到结果。要接收结果,请调用 startActivityForResult()(而不是 startActivity())。

更多请查看link