2016-04-22 9 views
-1

私はAndroidが初めてです。私は私のアプリでディレクトリを作成したい。そこには名前だけが表示されます。私はそこに追加する名前とAddPersonクラスを表示するためにDirectoryクラスを使用しています。ただし、AddPersonは機能しません。ここに私のディレクトリは次のとおりです。startActivityForResultを使用してリストにデータを追加

 package com.example.user.myapplication; 

     import android.content.Intent; 
     import android.support.annotation.Nullable; 
     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
     import android.view.View; 
     import android.widget.ArrayAdapter; 
     import android.widget.Button; 
     import android.widget.EditText; 
     import android.widget.ImageButton; 
     import android.widget.ListView; 

     import java.util.ArrayList; 

     public class Directory extends AppCompatActivity { 
      ArrayList<String> personList = new ArrayList<>(); 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       ListView list; 
       ImageButton addButton; 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_directory); 
       list = (ListView) findViewById(R.id.listView); 
       ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,android.R.id.text1, personList); 
       list.setAdapter(adapter); 
       addButton = (ImageButton)findViewById(R.id.imageButton5); 
       addButton.setOnClickListener(
         new View.OnClickListener() { 
          public void onClick(View v) { 
           Intent intent = new Intent("com.example.user.myapplication.AddPerson"); 
           startActivityForResult(intent, 1); 
          } 
         } 

       ); 

      } 

      @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       super.onActivityResult(requestCode, resultCode, data); 
       if (requestCode == 1 && resultCode == RESULT_OK){ 
        String result=data.getStringExtra("result"); 
        personList.add(result); 
       } 
      } 

     } 

これはAddPersonクラスです: パッケージcom.example.user.myapplication。

import android.app.Activity; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 

    public class AddPerson extends AppCompatActivity { 
     Button addButton; 
     EditText nameText; 
     Directory d = new Directory(); 
     public String name; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_add_person); 
      addButton = (Button) findViewById(R.id.button); 
      addButton.setOnClickListener(
        new View.OnClickListener() { 
         public void onClick(View v) { 
          nameText = (EditText) findViewById(R.id.editText); 
          EditText mailText = (EditText) findViewById(R.id.editText2); 
          name = nameText.getText().toString(); 
          Intent returnIntent = new Intent(); 
          returnIntent.putExtra("result", name); 
          setResult(1, returnIntent); 
          finish(); 
         } 
        } 

      ); 

     } 
} 

答えて

0

このおresultCodeとして1を返すされているため、常にfalseの場合:

if (requestCode == 1 && resultCode == RESULT_OK)

あなたはそれぞれ、その上でsetResult(RESULT_OK, returnIntent);

で正しい結果コードを返す必要がありますListViewのアダプタに変更があったことを通知する必要があるデータセットを変更するときに発生します。アダプタをクラス変数に移動し、結果の人を追加した後にadapter.notifyDataSetChanged();に電話してください。

+0

ありがとうございますがまだ動作しません – aladinsane7

+0

2番目のアクティビティから戻るときに何が起こったのかを確認してみましたか? – dharms

+0

申し訳ありませんが、私はあなたが意味するものを理解していませんでした – aladinsane7

0

まあ、突き出し主なものは、あなたがRESULT_OK(またはRESULT_CANCELED)を使用していないということです、多分試してみてください。

public void onClick(View v) { 
          nameText = (EditText) findViewById(R.id.editText); 
          EditText mailText = (EditText) findViewById(R.id.editText2); 
          name = nameText.getText().toString(); 
          Intent returnIntent = new Intent(); 
          returnIntent.putExtra("result", name); 
          setResult(Activity.RESULT_OK, returnIntent); 
          finish(); 

また、なぜあなたは手動で活動している(ディレクトリを作成していますこのコンテキスト)オブジェクトをAddPersonアクティビティに追加しますか?システムはアクティビティを作成する唯一のものです。

+0

まだ試してみましたが問題は続いています – aladinsane7

0

使用setResult(Activity.RESULT_OK, returnIntent);

int型RESULT_OKが一定値の値を持っていることを覚えておいてください:-1(0xffffffffの)

、あなたがリストにデータを追加するには何の問題もありません:

@Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {     
       if (requestCode == 1 && resultCode == RESULT_OK){ 
        String result=data.getStringExtra("result"); 
        personList.add(result); 
       } 
      } 
+0

まだ試してみましたが問題は続いています。とにかくありがとうございました – aladinsane7

関連する問題