Java 如何从其他活动中的用户输入中获取要显示在listview上的项目?
出于某种原因,当我在newtask.java中输入数据并单击create task时,它不会在listview中为MainActivity创建项目 MainActivity.javaJava 如何从其他活动中的用户输入中获取要显示在listview上的项目?,java,android,listview,android-listview,Java,Android,Listview,Android Listview,出于某种原因,当我在newtask.java中输入数据并单击create task时,它不会在listview中为MainActivity创建项目 MainActivity.java package com.example.shaan.todoer; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.support.v7.app.A
package com.example.shaan.todoer;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> adapter;
ListView listViewToDo;
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
listViewToDo = (ListView) findViewById(R.id.listViewToDo);
Intent i = new Intent(this, NewTask.class);
startActivityForResult(i, 1);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, list);
listViewToDo.setAdapter(adapter);
if(requestCode == 1) {
if(resultCode == RESULT_OK) {
String str = data.getStringExtra("type_task_name");
String str1 = data.getStringExtra("text_date");
int seek = data.getIntExtra("seekBar", 0);
list.add(str + " | " + str1 + " | " + seek); //The add method does not work. It says, "Cannot Resolve Method (java.lang.String)
}
adapter.notifyDataSetChanged();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listViewToDo = (ListView) findViewById(R.id.listViewToDo);
//Things still left to do:
//Prevent Overriding of Items
//Activate Delete Tasks on Hard Click of Items
//Fit Name, Date, and Priority on One Line of List
//Attempt to be able to sort items in Listview
Button firstButton = (Button) findViewById(R.id.add_task_group);
firstButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, CalendarViewActivity.class));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
我是Android的新手。以startActivityForResult的形式启动第二个活动,并使用setResult()方法将数据从Activity2发送回Activity1。在activity1中,需要重写onActivityResult,以便使用Activity2中的EditText数据更新TextView 例如: 从Acivity1启动活动2的方式为:
Intent i = new Intent(this, Activity2.class);
startActivityForResult(i, 1);
在Activity2中,使用setResult发回数据:
Intent intent = new Intent();
intent.putExtra("edittextvalue","value_here");
setResult(RESULT_OK, intent);
finish();
在第一个活动中,作为onActivityResult接收数据:
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String stredittext=data.getStringExtra("edittextvalue");
//list.add(stredittext); for Adding a data to listview and notifydataset changed by listview.notifydatasetchanged();
}
}
你应该使用startActivityforResult()来解决你的问题。你能向我解释一下startActivityforResult()吗,或者告诉我如何在这个应用程序中实现它吗?谢谢@RajanBhavsarIf任何人都能帮助我那太好了。我刚刚用我目前的内容编辑了我的文章。由于某些原因,没有列出任何项edittext的“edittextvalue”和“value_here”是什么?您可以将“edittextvalue”设置为键(只需获取从一个活动到另一个活动的值),并将“value_here”设置为您需要在列表项中设置的值。因此,如果我的edittext的名称是text_date,则“edittextvalue”会是什么我现在不能尝试,因为我不在家,但是当我今天晚些时候尝试时,我会让你知道它是怎么回事。感谢所有的帮助,我真的很感激,因为某些原因,我仍然有这个问题。例如,用户输入类型\任务\名称和文本\日期的活动将不会打开
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String stredittext=data.getStringExtra("edittextvalue");
//list.add(stredittext); for Adding a data to listview and notifydataset changed by listview.notifydatasetchanged();
}
}