2013-01-17 21 views
1

我需要一些幫助,我的android應用程序。我有兩個活動,第一個開始第二個與startActivityForResult()。當第二次關閉它發送的意圖,因爲它應該,但是當我想從onActivityResult()我得到一個空的,而不是什麼我把訪問額外的費用。 我還用包試圖與onActivityResult沒有得到意向的字符串

Bundle b = getIntent().getExtras(); 
b.getString(AddTable.EXTRA_NAME); 

但卻造成在RuntimeException和失敗傳遞結果。

這裏是我的代碼:

public class RunnerApp extends Activity { 

    private ListView listView; 
    private static ArrayList<String> values = new ArrayList<String>(); 
    private ArrayAdapter<String> adapter; 
    private Intent newTable; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_runner_app); 
     listView = (ListView) findViewById(R.id.mylist); 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); 
     listView.setAdapter(adapter); 
    } 

    public void addTable(View v){ 
     newTable = new Intent(this, AddTable.class); 
     startActivityForResult(newTable, 1); 
    } 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data){ 
     super.onActivityResult(requestCode, resultCode, data); 
     if(requestCode == 1 && resultCode == Activity.RESULT_OK && data != null){ 
     data = getIntent(); 
     Log.d("add", "got intent"); 
     String newName = data.getStringExtra(AddTable.EXTRA_NAME); 
      Log.d("add", "string " + newName); //always prints string null 
      values.add(newName); 
      Log.d("add", "added to list"); 
     } 
    } 

    @Override 
    public void onResume(){ 
     super.onResume(); 
     setContentView(R.layout.activity_runner_app); 
     adapter.notifyDataSetChanged(); 
    } 
} 

次活動開始由startActivityForResult()

public class AddTable extends Activity { 

    public final static String EXTRA_NAME = "com.example.runnerapp.NAME"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_table); 
    } 

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

    public void addThisTable(View v) { 
     Intent addTable = new Intent(this, RunnerApp.class); 
     EditText editText = (EditText) findViewById(R.id.addTableField); 
     String name = editText.getText().toString(); 
     addTable.putExtra(EXTRA_NAME, name); 
     Log.d("intenyt", name); 
     setResult(Activity.RESULT_OK, addTable); 
     this.finish(); 
    } 

} 
+0

如果你把'新的意向(這一點,RunnerApp.class);',並把它作爲剛剛'新的意向()',這是否工作? –

+0

不幸的是,沒有任何變化。 – jacobz

回答

1

在你的第一個活動代碼讀取

data = getIntent(); 

但是你要的實際數據是

在onActivityResult函數0
data.getData() 
+0

現在工作,非常感謝你! – jacobz

0

使用這個..

data.getStringExtra(EXTRA_NAME)