2011-01-25 15 views
7

मेरे पास Activity ए और बी जैसी दो गतिविधियां हैं और मैं Bundle और startActivity(intent) का उपयोग करके ए से बी के दो अलग-अलग तारों को पारित करने का प्रयास कर रहा हूं।एंड्रॉइड में अन्य गतिविधि से डेटा कैसे प्राप्त करें?

कि जैसा

:

Intent intent = new Intent(A.this, B.class); 
Bundle bundle = new Bundle(); 
bundle.putString("vidoedetails", filedetails); 
//bundle.putString("videoname", filename); 


intent.putExtras(bundle); 
//intent.putExtra("videofilename", filename); 
//intent.putExtra("vidoefiledetails", filedetails); 
startActivity(intent); 

और वर्ग बी में मैं अलग से वर्ग एक से तार प्रदर्शित करने के लिए दो TextView रों उपयोग कर रहा हूँ।

कि जैसा

:

Intent i = getIntent(); 
Bundle extras = i.getExtras(); 

filedetails = extras.getString("videodetails"); 
filename = extras.getString("videoname"); 

समस्या filedetils वर्ग बी में मुद्रित हो रहा है, लेकिन नहीं फ़ाइल नाम।

इसके लिए कोई समाधान?

उत्तर

19

आप लिखने में कोई त्रुटि है:

bundle.putString("vidoedetails", filedetails); 

bundle.putString("videodetails", filedetails); 
+33

मुझे अंतर को देखने के लिए मुझे 40 सेकंड की तरह लगा: एस – Tanin

2

होना चाहिए हाँ, आप गलत तरीके से लिखे गए videodetails:
तुम्हारा: vid * * विवरण
सही: vid * ईओ * विवरण

9

मुझे पता है कि मैं इस जवाब पर 9 दिन देर से हूं, लेकिन यह एक अच्छा उदाहरण है कि मैं एक स्थिरांक वर्ग क्यों बना रहा हूं। एक स्थिरांक वर्ग के साथ, इससे कोई फर्क नहीं पड़ता कि यह गलत वर्तनी है ("वीडियो" -> "vidoe") क्योंकि यह दोनों स्थानों पर 'गलत वर्तनी' होगी क्योंकि आप इसे एक प्रसिद्ध स्थान के माध्यम से संदर्भित कर रहे हैं।

Constants.java

public static String WELL_KNOWN_STRING "org.example.stackoverflow.4792829"; 

Activity1.java

bundle.putString(Constants.WELL_KNOWN_STRING, filedetails); 

Activity2.java

filedetails = extras.getString(Constants.WELL_KNOWN_STRING);   
+0

हमेशा ऐसा करें। यदि आप नहीं करते हैं, तो आप स्ट्रिंग मिस्चैच बग के साथ एक टन बर्बाद कर रहे हैं।जब आप स्ट्रिंग मिस्चैच बग के साथ समय बर्बाद करते हैं, तो सूर्य नीचे जायेगा और यह ध्यान दिए बिना अंधेरा हो जाएगा। जब आप ध्यान देने के बिना अंधेरा हो जाते हैं, तो आप एक ग्रू द्वारा खाएंगे। एक ग्रू द्वारा खाया मत करो। स्थिरांक के रूप में अपने कुंजी तार परिभाषित करें। –

0
// First activity 
actvty_btn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) {    
     Intent i = new Intent(v.getContext(),SECONDACTIVITY.class);  
     startActivityForResult(i, STATIC_INTEGER_VALUE); 
    } 
}); 

/* This function gets the value from the other activity where we have passed a value on calling this activity */ 
public void activity_value() { 
    Intent i = getIntent(); 
    Bundle extras=i.getExtras(); 
    if(extras !=null) { 
     // This is necessary for the retrv_value 
     rtrv_value = extras.getString("key"); 

     if(!(rtrv_value.isEmpty())) { 
      // It displays if the retrieved value is not equal to zero 
      myselection.setText("Your partner says = " + rtrv_value); 
     } 
    } 
} 


// Second activity 
myBtn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = new Intent(v.getContext(), FIRSTACTIVITY.class); 
     Bundle bundle = new Bundle(); 
     bundle.putString("key", txt1.getText().toString()); 
     // Here key is just the "Reference Name" and txt1 is the EditText value 
     intent.putExtras(bundle);    
     startActivity(intent); 
    } 
}); 
0

यहाँ एक और तरीका क्रियाएँ के बीच डेटा पास करने के लिए। यह एक ट्यूटोरियल से सिर्फ एक उदाहरण है जिसका मैं अनुसरण कर रहा था। मैं एक स्प्लैश स्क्रीन कि 5 सेकंड के लिए चलाता है और फिर इसे ध्वनि क्लिप से मार डालेंगे:

@Override 
protected void onPause() { 
    super.onPause(); 
    ourSong.release(); 
} 

मैंने तय कर लिया मैं ध्वनि, जबकि अभी भी मारने के लिए सक्षम किया जा रहा अगले गतिविधि में खेलना जारी रखना चाहता था क्लिप/इसे जारी वहां से, इसलिए मैंने ध्वनि क्लिप, मीडियाप्लेयर ऑब्जेक्ट, सार्वजनिक और स्थैतिक बनाया, जैसा कि System.out में एक सार्वजनिक स्थिर वस्तु है। एंड्रॉइड देव के लिए नया होना, लेकिन जावा देव के लिए नया नहीं, मैंने इसे इस तरह से किया।

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 

public class Splash extends Activity { 

    public static MediaPlayer ourSong; // <----- Created the object to be shared 
             // this way 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     ourSong = MediaPlayer.create(Splash.this, R.raw.dubstep); 
     ourSong.start(); 
     Thread timer = new Thread() { 
      public void run() { 
       try { 
        sleep(5000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } finally { 
        Intent openStartingPoint = new Intent(
          "expectusafterlun.ch.androidtutorial.MENU"); 
        startActivity(openStartingPoint); 
       } 
      } 
     }; 
     timer.start(); 
    } 
} 

फिर अगली गतिविधि या किसी अन्य गतिविधि से, मैं उस मीडियाप्लेयर ऑब्जेक्ट तक पहुंच सकता था।

public class Menu extends ListActivity { 

    String activities[] = { "Count", "TextPlay", "Email", "Camera", "example4", 
      "example5", "example6" }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(Menu.this, 
       android.R.layout.simple_expandable_list_item_1, activities)); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     Splash.ourSong.release(); // <----- Accessing data from another Activity 
            // here 
    } 

} 
संबंधित मुद्दे