android 通过intent向父activity传递值,并更新

文章标签: android,android-intent
2014-11-14 13:14:01     人阅读    

我现在可以成功的把第一个  activity中listVist展示的string传递到第二个activity的 EditText中,
我现在想编辑这个文本框,并把编辑后的值更新到第一个listView中

我不是很确定下面的方法能否成功 onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        String name = data.getExtras().getString("name");
        Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
    }
}

 


下面是我第一个Activity
 

public class ToDoActivity extends Activity {
        private ArrayList<String> todoItems;
        private ArrayAdapter<String> todoAdapter;       // declare array adapter which will translate the piece of data to teh view
        private ListView lvItems;                   // attach to list view
        private EditText etNewItem;
        private final int REQUEST_CODE = 20;
        //private Intent i;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_to_do);
            etNewItem = (EditText) findViewById(R.id.etNewItem);
            lvItems = (ListView) findViewById(R.id.lvItems);        // 找到这个ListView             //populateArrayItems();                 // call function
            readItems();        //从文件中读取项目              todoAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoItems);   //创建适配器            lvItems.setAdapter(todoAdapter);        // populate listview using the adapter 
            //todoAdapter.add("item 4");
            setupListViewListener();
            setupEditItemListener();
            onActivityResult(REQUEST_CODE, RESULT_OK, /** Intent variable **/);
        }
    private void launchEditItem(String item) {
        Intent i = new Intent(this, EditItemActivity.class);
        i.putExtra("itemOnList", item);     //在编辑框中展示项         //startActivityForResult(i, REQUEST_CODE);
        startActivity(i);
    }

    private void setupEditItemListener() {          // on click, run this function to display edit page
        lvItems.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> adapter, View item, int pos, long id) {
                String text = (String) lvItems.getItemAtPosition(pos);
                launchEditItem(text);
            }

        });
    }

    private void setupListViewListener() {
        lvItems.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> adapter, View item, int pos, long id) {
                todoItems.remove(pos);
                todoAdapter.notifyDataSetChanged(); // has adapter look back at the array list and refresh it's data and repopulate the view
                writeItems();
                return true;
            }
        });
    }

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

    public void onAddedItem(View v) {
        String itemText = etNewItem.getText().toString();
        todoAdapter.add(itemText);  // add to adapter
        etNewItem.setText("");      //clear edit text
        writeItems();       //each time to add item, you want to write to file to memorize
    }

    private void readItems() {
        File filesDir = getFilesDir();  //返回路径
        File todoFile = new File(filesDir, "todo.txt");
        try {
            todoItems = new ArrayList<String>(FileUtils.readLines(todoFile));   //populate with read
        }catch (IOException e) {    // if files doesn't exist  
            todoItems = new ArrayList<String>();
        }
    }

    private void writeItems() {
        File filesDir = getFilesDir();  //return path where files can be created for android
        File todoFile = new File(filesDir, "todo.txt");
        try {
            FileUtils.writeLines(todoFile, todoItems);  // pass todoItems to todoFile
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
            String name = data.getExtras().getString("name");
            Toast.makeText(this, name, Toast.LENGTH_SHORT).show();
        }
    }
}

我想通过Intent进行传递,但我不懂如何做、

下面是我第二个Activity

public class EditItemActivity extends Activity {
    private EditText etEditItem;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_item);
        Intent i = getIntent();
        String ItemToEdit = i.getStringExtra("itemOnList");
        etEditItem = (EditText)findViewById(R.id.etEditItem);
        etEditItem.setText(ItemToEdit);
        onSubmit(etEditItem);
    }

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

    public void DoneEdit(View v) {
        this.finish();
    }

    public void onSubmit(View v) {
        EditText etName = (EditText) findViewById(R.id.etEditItem);
        Intent data = new Intent();
        data.putExtra("EditedItem", etName.getText().toString());
        setResult(RESULT_OK, data);
        finish();
    }
}


原文地址:http://www.itmmd.com/201411/176.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

android 更新后 usb调试不好用,Eclipse和 adb无法识别手机   上一篇
下一篇  android 通过android.provider.Telephony.SMS_RECEIVED 不能正确的捕获短信接收信号
精彩回复
我要追加问题,请求站长解决!
姓名:       

《程序员app》专门为程序员量身定做!