2012-10-10 115 views
0

我的Android的初学者。我想将FirstActivity的结果传递给SecondActivity,如下所示。如何删除意图额外的结果?或者任何将结果传递给SecondActivity并在TextView上显示的方式? (我犯了一个错误,更换,我的主要问题是如何删除的结果,因为我想设置在它的另一个新的结果。)如何发送意图额外?

FirstActivity.java

public class FirstActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     //code... 
     try {  
      myDbHelper.createDatabase(); 
     } 
     catch (IOException ioe) { 
     Log.d("Error","Error while createing Database"); 
     ioe.printStackTrace(); 
     throw new Error("Unable to create database"); 
     } 
     try {  
      myDbHelper.openDataBase();  
     } 
     catch(SQLException sqle){ 
      Log.d("Error","Error while Opening Database"); 
      sqle.printStackTrace(); 
      throw sqle;  
     } 
     send.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     showResult(); 
    } 
    });    
    } 
    private void showResult() { 
     //...code  
     //checking for slection 
     results = queryData(table, type);    
     Intent intent = new Intent(this,SecondActivity.class);  
     intent.putExtra("results", results); 
     startActivity(intent); 
    } 
    public String queryData(String table, String type){ 
     //... 
     //do somthing to get result 
     return result; 
    } 
    } 

SecondActivity的.java

public class SecondActivity extends Activity {  
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);      
     setContentView(R.layout.result_item);   
     TextView tv;   
     tv = (TextView)findViewById(R.id.tv);  
     Bundle extras=getIntent().getExtras(); 
     String value1=extras.getString("results");  
     tv.setText("Result\n" + value1); 
    } 
    } 
+2

其实你的方式是正确的。尝试启动'startActivity(意向)的活动;'而不是'startActivityForResult(意向,0);' – Praveenkumar

回答

0

你可以用两种方法做:

1.可以使用startActivityForResult()onActivityResult()从活动A,转嫁到活动B中的数据,在此之后一些计算,通过将结果返回到活动A.

2.现在,如果你想刚刚从活动A发送一些数据到活动B,然后显示它的TextView,然后用putExtra()getExtras() ...

从活动发送到B:

Intent i = new Intent(Activity_A.this, Activity_B.class); 
i.putExtra("name",Name); 
startActivity(i); 

收到关于活动B值:

Intent i = getIntent(); 
String n = i.getExtras().getString("name"); 
+0

这可能会导致一个问题,如果你putExtra为空,为了处理这种情况,你必须检查你是否(! getExtra()。getString.equal(null)),然后做任何你想要的事情 – Ehsan

0

变化startActivityForResult(intent, 0)startActivity(intent);

这样

private void showResult() { 
    results = queryData(table, type);    
    Intent intent = new Intent(firstActivity.this,SecondActivity.class);  
    intent.putExtra("results", results); 
    startActivity(intent); 
} 
0

结交新意图,并通过

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);  
intent.putExtra("results", results); 
startActivity(intent); 
0

你做了你的方法的方式,将数据传递到下一个Activity是正确的。但是,你开始活动时犯了一个错误。开始在你的代码的Activity应该有如下 -

private void showResult() { 
    //...code  
    //checking for slection 
    results = queryData(table, type);    
    Intent intent = new Intent(this,SecondActivity.class);  
    intent.putExtra("results", results); 
    startActivity(intent); // This is the way to start a new Activity which is in seperate class 
} 

而且,只要看看下面 -

  1. How do I pass data between Activities in Android application?

  2. Passing data between activities in Android