2010-11-17 79 views
0

我已经搜索和搜索,我只是不能让这段代码工作。我有一个main.xml布局和一个setting.xml.I有一些值,我希望Settings.class更改在我的主要应用程序class.Three字符串是确切的。传递意图的值

我在主要的应用程序类

settings.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
    Intent intent = new Intent(v.getContext(), Settings.class); 
    startActivityForResult(intent, 0); 


    } 
    }); 

//Then a function 
@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent){ 
     super.onActivityResult(requestCode, resultCode, intent); 
     Bundle extras = intent.getExtras(); 
     String value = extras.getString("myKey"); 
     if(value!=null){ 
     Log.d("hmmm",value); 
     } 
    } 
} 

尝试这种简单的测试代码在我settings.class我有以下

returnHome.setOnClickListener(new OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
    Intent intent = new Intent(); 
    intent.putExtra("myKey", "YEAH"); 
       setResult(RESULT_OK, intent); 
       finish(); 


    } 

     }); 

回到它是没有得到记录主要的应用程序类。

就像我说过的,我在主类中有三个字符串,我希望设置类可以更改并发回。 非常感谢任何帮助

+0

快速浏览后,你的代码看起来是正确的 - 出于利益考虑,在你的清单文件,你是否为你的主要活动或设置活动设置了一个特定的'android:launchMode'? – Scoobler 2010-11-17 11:24:23

回答

1

我已经成功地使用了Notepad tutorial中使用的技术,其中信息被放置在Bundle然后添加到意图。请参阅步骤10:

Bundle bundle = new Bundle(); 

bundle.putString(NotesDbAdapter.KEY_TITLE, mTitleText.getText().toString()); 
bundle.putString(NotesDbAdapter.KEY_BODY, mBodyText.getText().toString()); 
if (mRowId != null) { 
    bundle.putLong(NotesDbAdapter.KEY_ROWID, mRowId); 
} 

Intent mIntent = new Intent(); 
mIntent.putExtras(bundle); 
setResult(RESULT_OK, mIntent); 
finish(); 
0

你的代码工作对我很好,这里的一大堆

Main.java

package com.test; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class Main extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button settings = (Button) findViewById(R.id.settings); 
     settings.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(), Settings.class); 
      startActivityForResult(intent, 0); 
     } 
     }); 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, 
     Intent intent) { 
     super.onActivityResult(requestCode, resultCode, intent); 
     Bundle extras = intent.getExtras(); 
     String value = extras.getString("myKey"); 
     if (value != null) { 
     Log.d("hmmm", value); 
     } 
    } 
} 

Settings.java

package com.test; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class Settings extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.settings); 
     Button returnHome = (Button) findViewById(R.id.returnHome); 
     returnHome.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.putExtra("myKey", "YEAH"); 
      setResult(RESULT_OK, intent); 
      finish(); 
     } 
     }); 
    } 
} 

的main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <Button 
      android:text="Settings" 
      android:id="@+id/settings" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"></Button> 
</LinearLayout> 

的settings.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <Button 
      android:text="Return home" 
      android:id="@+id/returnHome" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"></Button> 
</LinearLayout> 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.test" 
     android:versionCode="1" 
     android:versionName="1.0"> 
     <application 
      android:icon="@drawable/icon" 
      android:label="@string/app_name"> 
      <activity 
        android:name=".Main" 
        android:label="@string/app_name"> 
        <intent-filter> 
         <action 
           android:name="android.intent.action.MAIN" /> 
         <category 
           android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter> 
      </activity> 
      <activity 
        android:name="Settings" 
        android:label="Settings" /> 
     </application> 
</manifest> 

而且logcat中走了出来:

11-17 12:21:46.717: DEBUG/hmmm(258): YEAH 
+0

我知道它使用捆绑工作,奇怪的仍然不会使用above.Thanks花时间来打字。 – James 2010-11-17 12:44:14