2016-12-27 91 views
0

首先,我搜索了很多其他帖子,但仍未找到它的修復程序。Android - 將項目添加到ListView從另一個活動

MainActivity包含ListViewImageButton需要AddActivity。 這AddActivity已得到EditTextnameAddInput)和ButtonaddButton)。

儘管點擊該Button,在MainActivityListView保持爲空...不明白爲什麼...

這裏是MainActivity的代碼:

public class MainActivity extends AppCompatActivity { 

static final int PICK_CONTACT_REQUEST = 0; 

private ListView list; 
private ArrayAdapter<String> adapter; 
private ArrayList<String> arrayList; 


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

    list = (ListView) findViewById(R.id.itemsList); 
    arrayList = new ArrayList<>(); 
    adapter = new ArrayAdapter<>(this, R.layout.listview_style1, android.R.id.text1, arrayList); 
} 

public void onClickAddButton(View view) { 
    Intent i = new Intent(MainActivity.this, AddActivity.class); 
    startActivityForResult(i, 2); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PICK_CONTACT_REQUEST) { 
     if (resultCode == RESULT_OK) { 
      addNewItem(); 
     } 
    } 
} 

public void addNewItem() { 
    Bundle addNameInfo = getIntent().getExtras(); 
    if(addNameInfo == null) 
     return; 
    String nameInput = addNameInfo.getString("nameInput"); 
    arrayList.add(nameInput); 
    list.setAdapter(adapter); 
    adapter.notifyDataSetChanged(); 
} 

}

xml文件的MainActivity在ImageButton中:android:onClick="onClickAddButton"

代碼AddActivity的:

public class AddActivity extends AppCompatActivity { 

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

public void backToMain(View view) { 
    Intent i = new Intent(); 
    EditText nameAddInput = (EditText) findViewById(R.id.nameAddInput); 
    String userNameText = nameAddInput.getText().toString(); 
    i.putExtra("nameInput", userNameText); 
    setResult(RESULT_OK, i); 
    finish(); 
} 

}

在AddActivityXML文件中的按鈕:android:onClick="backToMain"

希望有人能幫助! 提前謝謝!

回答

0

getIntent()返回你推出MainActivity,不是你在backInMain

設置一個嘗試傳遞給你的onActivityResult「數據」變量的意圖是什麼?

也改變

startActivityForResult(i, PICK_CONTACT_REQUEST); 

我也建議你重命名變量

+0

感謝您的快速響應。我試過像@testigrator說,仍然不工作。 – ng02

+0

除了上面的內容,您還調用了startActivityForResult(x,2)(即請求代碼= 2),但是在您的onActivityResult回調函數中,您將針對您定義爲0的PICK_CONTACT_CODE檢查代碼。這些數字需要相等。 – Hai

+1

它的工作!非常感謝!! ;) – ng02

0

設置適配器剛的onCreate並調用notifyDataSetChanged在addNewItem方法。

+0

感謝您的快速響應。 'arrayList.add(nameInput); arrayList.add(currentSize ++,nameInput); list.setAdapter(adapter);' 在onCreate方法中只做'adapter.notifyDataSetChanged();'在'addNewItem()'? – ng02

0

結果值返回到onActivityResult函數的Intent data -Parameter中,而不是在mainActivity的intent-member中。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PICK_CONTACT_REQUEST) { 
     if (resultCode == RESULT_OK) { 
      addNewItem(data.getExtras().getString("nameInput"); 
     } 
    } 
} 
... 
public void addNewItem(String newItem) 
... 
+0

感謝您的快速響應。 'public void addNewItem(String nameInput){ \t arrayList.add(nameInput); \t list.setAdapter(adapter); adapter.notifyDataSetChanged(); }' 試圖改變'onActivityResult(...)'方法和上面的這一個,它仍然不工作.. – ng02

相關問題