স্ট্রিং ডেটার জন্য কীভাবে পুটেক্সট্রা () এবং getExtra () ব্যবহার করবেন


318

কেউ দয়া করে আমাকে কীভাবে সঠিকভাবে ব্যবহার করতে getExtra()এবং putExtra()উদ্দেশ্যগুলি সম্পর্কে বলতে পারেন ? আসলে আমার কাছে স্ট্রিং ভেরিয়েবল আছে, বলুন স্ট্রিং, যা কিছু স্ট্রিং ডেটা সঞ্চয় করে। এখন, আমি এই তথ্যটি একটি কার্যকলাপ থেকে অন্য ক্রিয়াকলাপে প্রেরণ করতে চাই।

  Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
  String keyIdentifer  = null;
  i.putExtra(strName, keyIdentifer );

এবং তারপরে সেকেন্ডস্ক্রিন.জভাতে

 public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.table);
        TextView userName = (TextView)findViewById(R.id.userName);
        Bundle bundle = getIntent().getExtras();

        if(bundle.getString("strName")!= null)
        {
            //TODO here get the string stored in the string variable and do 
            // setText() on userName 
        }

    }

আমি জানি এটি খুব প্রাথমিক প্রশ্ন তবে দুর্ভাগ্যক্রমে আমি এখানে আটকা পড়েছি। সাহায্য করুন.

ধন্যবাদ,

সম্পাদনা: এখানে আমি যে পংক্তিটি এক পর্দা থেকে অন্য স্ক্রিনে যাওয়ার চেষ্টা করছি তা গতিশীল। এটি হ'ল আমার একটি সম্পাদনা পাঠ্য রয়েছে যেখানে আমি যে কোনও ধরণের ব্যবহারকারীই স্ট্রিং পাচ্ছি। তারপরে সহায়তায় myEditText.getText().toString()। আমি স্ট্রিং হিসাবে প্রবেশমূল্য পাচ্ছি তখন আমাকে এই ডেটাটি পাস করতে হবে।


i.putExtra (strName, keyIdentifer); এই স্টেটমেন্টটিতে strName ভেরিয়েবল রয়েছে যখন bundle.getString ("strName") এর "strName" স্ট্রিং রয়েছে। এর ইন্টেন্ট.পুটেক্সট্রা (কী, মান) এবং ইন্টেন্ট.জেটেক্সট্রা ()। গেটস্ট্রিং (কী); নিশ্চিত করুন যে আপনি একই কী ব্যবহার করছেন এবং রাখুন।
সীমা

উত্তর:


416

ফাইলটি "লাগাতে" এটি ব্যবহার করুন ...

Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
String strName = null;
i.putExtra("STRING_I_NEED", strName);

তারপরে, মানটি পুনরুদ্ধার করতে কিছু চেষ্টা করুন:

String newString;
if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        newString= null;
    } else {
        newString= extras.getString("STRING_I_NEED");
    }
} else {
    newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}

10
ওরিয়েন্টেশন পরিবর্তনগুলি পরিচালনা করতে "" SaveInstanceState ... "এবং" ... getSerialiable "কোড ব্যবহার করা হয়? যদি না, সেই কোডটি কীসের জন্য ব্যবহৃত হয়?
এজেডাব্লু

আমি অ্যান্ড্রয়েড 3.0.০.১ ব্যবহার করছি এবং আমাকে ব্যবহার করতে হয়েছিল this.getActivity().getIntent().getExtras()
টাইলার

আপনি PendingIntents ব্যবহার করেন, তাহলে আপনি "PendingIntent.FLAG_UPDATE_CURRENT" ফ্ল্যাগ ব্যবহার করা প্রয়োজন: stackoverflow.com/a/29846408/2738240 ইন্টেন্ট অভিপ্রায় = নতুন ইন্টেন্ট (কনটেক্সট, MainActivity.class); ইন্টেন্ট.পুটেক্সট্রা ("বোতাম_আইডি", 1); পেন্ডিংআইটেন্ট পেন্ডিংআইটেন্ট = পেন্ডিং ইন্টেন্ট.জেট অ্যাক্টিভিটি (প্রসঙ্গ, 0, অভিপ্রায়, মুলতুবিকরণ .FLAG_UPDATE_CURRENT); রিমোটভিউস ভিউ = নতুন রিমোটভিউ (কনটেক্সট.জেটপ্যাকেজনেম (), আর.লেআউটআউট_মি_ইস্ট_উইজেড); ভিউ.সেটঅনক্লিকপেনডিং ইনট্যান্ট (আর.আইড.মি_স্টেস্ট_উইজেড_বাটন_1, পেন্ডিং ইন্টেন্ট);
ম্যাথিয়াস লুহ

69

প্রথম স্ক্রিন.জভা

text=(TextView)findViewById(R.id.tv1);
edit=(EditText)findViewById(R.id.edit);
button=(Button)findViewById(R.id.bt1);

button.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
        String s=edit.getText().toString();

        Intent ii=new Intent(MainActivity.this, newclass.class);
        ii.putExtra("name", s);
        startActivity(ii);
    }
});

দ্বিতীয় স্ক্রিন.জভা

public class newclass extends Activity
{
    private TextView Textv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.intent);
        Textv = (TextView)findViewById(R.id.tv2);
        Intent iin= getIntent();
        Bundle b = iin.getExtras();

        if(b!=null)
        {
            String j =(String) b.get("name");
            Textv.setText(j);
        }
    }
}

52

সেরা পদ্ধতি ...

SendingActivity

Intent intent = new Intent(SendingActivity.this, RecievingActivity.class);
intent.putExtra("keyName", value);  // pass your values and retrieve them in the other Activity using keyName
startActivity(intent);

RecievingActivity

 Bundle extras = intent.getExtras();
    if(extras != null)
    String data = extras.getString("keyName"); // retrieve the data using keyName 

/// তথ্য প্রাপ্তির সবচেয়ে সংক্ষিপ্ততম উপায় ..

String data = getIntent().getExtras().getString("keyName","defaultKey");

// এর জন্য এপিআই 12 প্রয়োজন // // দ্বিতীয় প্যারামিটারটি isচ্ছিক। কী-নামটি যদি নাল হয় তবে defaultkeyডেটা হিসাবে ব্যবহার করুন ।


18

এটি আমি ব্যবহার করছি, আশা করি এটি কাউকে সহায়তা করে .. সহজ এবং সংবেদনশীল।

তথ্য পাঠান

    intent = new Intent(getActivity(), CheckinActivity.class);
    intent.putExtra("mealID", meal.Meald);
    startActivity(intent);

তথ্য নাও

    int mealId;

    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();

    if(bundle != null){
        mealId = bundle.getInt("mealID");
    }

চিয়ার্স!


1
আমাকে এখনও আমার নিজের মনে করিয়ে দিতে হবে, এখন থেকে এবং কীভাবে এটি সঠিকভাবে করা হয়েছিল .. হ্যাঁ!
সিন্ধ্রী Sepr

10

intentঅ্যান্ড্রয়েডে এটি প্রয়োগ করা খুব সহজ .. এটি আপনাকে একটি ক্রিয়াকলাপ থেকে অন্য ক্রিয়াকলাপে স্থানান্তরিত করতে লাগে, আমাদের দুটি পদ্ধতি করতে হবে putExtra();এবং getExtra();এখন আমি আপনাকে উদাহরণটি দেখিয়ে দিচ্ছি ..

    Intent intent = new Intent(activity_registration.this, activity_Login.class);
                intent.putExtra("AnyKeyName", Email.getText().toString());  // pass your values and retrieve them in the other Activity using AnyKeyName
                        startActivity(intent);

এখন আমাদের AnyKeyNameপ্যারামিটার থেকে মান পেতে হবে, নীচের বর্ণিত কোডটি এটি করতে সহায়তা করবে

       String data = getIntent().getExtras().getString("AnyKeyName");
        textview.setText(data);

আমরা Intentযেখানেই আমাদের প্রয়োজন থেকে সহজেই গ্রহণের মান সেট করতে পারি।


6

একটি ছোট সংযোজন: কীটির জন্য আপনার নিজের নাম তৈরি করতে হবে না, অ্যান্ড্রয়েড এগুলি সরবরাহ করে, f.ex. Intent.EXTRA_TEXT। গৃহীত উত্তরটি পরিবর্তন করা:

Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
String strName = null;
i.putExtra(Intent.EXTRA_TEXT, strName);

তারপরে, মানটি পুনরুদ্ধার করতে কিছু চেষ্টা করুন:

String newString;
Bundle extras = getIntent().getExtras();
if(extras == null) {
    newString= null;
} else {
    newString= extras.getString(Intent.EXTRA_TEXT);
}

4
Intent intent = new Intent(view.getContext(), ApplicationActivity.class);
                        intent.putExtra("int", intValue);
                        intent.putExtra("Serializable", object);
                        intent.putExtra("String", stringValue);
                        intent.putExtra("parcelable", parObject);
                        startActivity(intent);

ApplicationActivity

Intent intent = getIntent();
Bundle bundle = intent.getExtras();

if(bundle != null){
   int mealId = bundle.getInt("int");
   Object object = bundle.getSerializable("Serializable");
   String string = bundle.getString("String");
   T string = <T>bundle.getString("parcelable");
}

4

ইনটেন্ট ক্লাসে আপডেট করুন ।

  • ব্যবহার hasExtra()উদ্দেশ্য কীতে ডেটা আছে কিনা তা পরীক্ষা করার জন্য ।
  • আপনি এখন getStringExtra()সরাসরি ব্যবহার করতে পারেন ।

পাস ডেটা

intent.putExtra(PutExtraConstants.USER_NAME, "user");

তথ্য নাও

String userName;
if (getIntent().hasExtra(PutExtraConstants.USER_NAME)) {
    userName = getIntent().getStringExtra(PutExtraConstants.USER_NAME);
}

সর্বদা সেরা অনুশীলন হিসাবে ধ্রুবকগুলিতে কীগুলি রাখুন।

public interface PutExtraConstants {
    String USER_NAME = "USER_NAME";
}

PutExtraConstantsএকটি ইন্টারফেস কেন ?
বড়_চায়ের

@Big_Chair কারণ PutExtraConstantsবর্গ শুধুমাত্র ধ্রুবক রয়েছে ( public, static, final)। সুতরাং কনস্ট্যান্টগুলির জন্য ইন্টারফেস ব্যবহার করা ভাল।
খেমরাজ

3

খুবই সাধারণ

প্রেরক পক্ষ

Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
i.putExtra("id","string data");
startActivity(i)

রিসিভার পাশ

Intent i = new Intent(SourceActiviti.this,TargetActivity.class);
String strData = i.getStringExtra("id");

3

স্ট্রিং ইনটেন্ট অবজেক্টে রাখুন

  Intent intent = new Intent(FirstActivity.this,NextAcitivity.class);
  intent.putExtra("key",your_String);
  StartActivity(intent);

অনক্রিট পদ্ধতিতে NextAcitvity স্ট্রিং পান

String my_string=getIntent().getStringExtra("key");

এটি সহজ এবং স্বল্প পদ্ধতি


2

পাঠান

startActivity(new Intent(First.this, Secend.class).putExtra("key",edit.getText.tostring));

পাওয়া

String myData = getIntent.getStringExtra("key");

1

ফাংশন করা

etname=(EditText)findViewById(R.id.Name);
        tvname=(TextView)findViewById(R.id.tvName);

        b1= (ImageButton) findViewById(R.id.Submit);

        b1.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                String s=etname.getText().toString();

                Intent ii=new Intent(getApplicationContext(), MainActivity2.class);
                ii.putExtra("name", s);
                Toast.makeText(getApplicationContext(),"Page 222", Toast.LENGTH_LONG).show();
                startActivity(ii);
            }
        });



getfunction 

public class MainActivity2 extends Activity {
    TextView tvname;
    EditText etname;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity2);
        tvname = (TextView)findViewById(R.id.tvName);
        etname=(EditText)findViewById(R.id.Name);
        Intent iin= getIntent();
        Bundle b = iin.getExtras();

        if(b!=null)
        {

          String j2 =(String) b.get("name");

etname.setText(j2);
            Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show();
        }
    }

1

তথ্য পুশ করুন

import android.content.Intent;

    ...

    Intent intent = 
        new Intent( 
            this, 
            MyActivity.class );
    intent.putExtra( "paramName", "paramValue" );
    startActivity( intent );

উপরের কোডটি মূলের ভিতরে থাকতে পারে activity। " MyActivity.class" দ্বিতীয়টি Activityআমরা চালু করতে চাই; এটি অবশ্যই আপনার AndroidManifest.xmlফাইলে অন্তর্ভুক্ত থাকতে হবে ।

<activity android:name=".MyActivity" />

ডেটা টানুন

import android.os.Bundle;

    ...

    Bundle extras = getIntent().getExtras();
    if (extras != null)
    {
        String myParam = extras.getString("paramName");
    }
    else
    {
        //..oops!
    }

এই উদাহরণে, উপরের কোডটি আপনার MyActivity.javaফাইলে থাকবে।

Gotchas

এই পদ্ধতিটি কেবল পাস করতে পারে strings। সুতরাং আসুন আপনি একটি পাস করতে হবে বলা যাক ArrayListআপনার টু ListActivity; একটি সম্ভাব্য কর্মসংস্থান হ'ল কমা-বিচ্ছিন্ন স্ট্রিং পাস করা এবং তারপরে এটি অন্য দিকে বিভক্ত করা।

বিকল্প সমাধান

ব্যবহার SharedPreferences


এবং আমি যদি স্ট্রিং.এক্সএমএল থেকে একটি স্ট্রিং পাস করতে চাই?
এইচবি।

1

সহজ, প্রথম ক্রিয়াকলাপে-

    EditText name= (EditText) findViewById(R.id.editTextName);
    Button button= (Button) findViewById(R.id.buttonGo);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(MainActivity.this,Main2Activity.class);
            i.putExtra("name",name.getText().toString());
           startActivity(i);
          }
    });

দ্বিতীয় ক্রিয়াকলাপে-

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    TextView t = (TextView) findViewById(R.id.textView);
    Bundle bundle=getIntent().getExtras();
    String s=bundle.getString("name");
    t.setText(s);
}

আপনি চাইলে / অন্য শর্তগুলি যুক্ত করতে পারেন।


1

ফার্স্টস্ক্রিন.জাভাতে

    Intent intent = new Intent(FirstScreen.this, SecondScreen.class);
    String keyIdentifier = null;
    intent.putExtra(strName, keyIdentifier);

সেকেন্ডস্ক্রিন.জাভাতে

    String keyIdentifier;
    if (savedInstanceState != null)
        keyIdentifier= (String) savedInstanceState.getSerializable(strName);
    else
        keyIdentifier = getIntent().getExtras().getString(strName);

তাই আপনাকে স্বাগতম! দয়া করে আপনার উত্তরটি সম্পাদনা করুন এবং কেন এবং কীভাবে এটি সমস্যার সমাধান করে তার কিছুটা বিশদভাবে ব্যাখ্যা করুন। আরও দিকনির্দেশের জন্য, stackoverflow.com/help/how-to-answer দেখুন
বি - রিয়ান

0

স্ট্রিং আগে রাখুন

Intent secondIntent = new Intent(this, typeof(SecondActivity));
            secondIntent.PutExtra("message", "Greetings from MainActivity");

তার পরে এটি পুনরুদ্ধার করুন

var message = this.Intent.GetStringExtra("message");

এখানেই শেষ ;)


-1

আপনি আপনার এডিটেক্সট এর স্ট্রিং সংরক্ষণ করতে স্ট্যাটিক ভেরিয়েবলটি সহজেই ব্যবহার করতে পারেন এবং তারপরে অন্য শ্রেণিতে সেই পরিবর্তনশীলটি ব্যবহার করতে পারেন। এই আপনার সমস্যার সমাধান হবে আশা করি


আপনি পারেন তবে আপনার করা উচিত নয় :-)
ব্লুন্ডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.