android - আউট - নিউ জিমেইল অ্যাকাউন্ট




শুরু অ্যাক্টিভিটিফোরসেল্ট() একটি ফাটল এবং শেষ সন্তানের ক্রিয়াকলাপ থেকে, ক্র্যাকে অ্যাক্টিভিটি রিসাল্ট() কে কল করে না (6)

অনঅ্যাক্টিভিটি রিসাল্ট () এর অ্যাক্টিভিটি রিসাল্ট () অ্যাক্টিভিটি রিসাল্ট () অ্যাক্টিভিটি রিসাল্ট () ফরমেশনটি কল করবে কারণ ফাংশনটি কার্যকলাপে স্থাপন করা হয় তাই সম্ভবত এটি মূল অ্যাক্টিভিটিতে ফিরে আসে

FirstActivity.Java একটি FragmentA.Java FirstActivity.Java যা শুরু করে FirstActivity.Java startActivityForResult()SecondActivity.Java কল finish() কিন্তু onActivityResult FragmentA.JavaonActivityResult লেখা যায় না।

FragmentA.Java কোড:

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // some code
    Intent i = new Intent(getActivity(), SecondActivity.class);
    i.putExtra("helloString", helloString);
    getActivity().startActivityForResult(i, 1);
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    getActivity();
    if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
       //some code
    }
  }

SecondActivity.Java কোড:

  @Override
  protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       //some code
       Intent returnIntent = new Intent();
       returnIntent.putExtra("result", result);                          

       setResult(Activity.RESULT_OK,returnIntent);     
       finish();
  }

আমি কোড ডিবাগ করার চেষ্টা করেছি, কিন্তু onAcitvityResult() কখনও বলা হয় না।


আপনাকে অবশ্যই onActivityResult()FirstActivity.Java আপনার প্রথম FirstActivity.Java নিম্নরূপ

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}

তাই এই আপনার onActivityResult() এর onActivityResult() কল হবে onActivityResult()

সম্পাদন করুন: সমাধানটি getActivity().startActivityForResult(i, 1); হল getActivity().startActivityForResult(i, 1); startActivityForResult(i, 1); সঙ্গে startActivityForResult(i, 1);


আপনার onActivityresult() করুন onActivityresult() অ্যাক্টিভিটি।


আমরা startActivityForResult() সরাসরি ফ্র্যাগমেন্ট থেকে কল করতে this.startActivityForResult(i, 1); তাই আপনাকে this.startActivityForResult(i, 1); কল করা উচিত this.startActivityForResult(i, 1); পরিবর্তে getActivity().startActivityForResult(i, 1);

Intent i = new Intent(getActivity(), SecondActivity.class);
i.putExtra("helloString", helloString);
this.startActivityForResult(i, 1);

কার্যকলাপ আপনার Fragment কার্যকলাপ ফলাফল পাঠাতে হবে।


সবচেয়ে গুরুত্বপূর্ণ বিষয়, এখানে সব অনুপস্থিত রয়েছে ... প্রথম অ্যাক্টিভিটিটির লঞ্চমোড একক হতে হবে। যদি এটি একক ইনস্ট্যান্স হয় তবে ফ্র্যাগমেন্ট এ অনঅ্যাক্টিভিটি রিসাল্টটি startActivityForResult পদ্ধতিটি কল করার পরেই বলা হবে। সুতরাং, এটি সেকেন্ড অ্যাক্টিভিটিতে ফিনিশ () পদ্ধতির কল করার জন্য অপেক্ষা করবে না।

তাই নিচের পদক্ষেপগুলি অনুসরণ করুন, এটি দীর্ঘদিন গবেষণা করার পরেও এটি আমার জন্য কাজ হিসাবে স্পষ্টভাবে কাজ করবে।

AndroidManifest.xml ফাইলটিতে, প্রথম অ্যাক্টিভিটি.জাভকে একযোগে চালু করুন।

<activity
        android:name=".FirstActivity"
        android:label="@string/title_activity_main"
        android:launchMode="singleTop"
        android:theme="@style/AppTheme.NoActionBar" />

FirstActivity.java তে, অ্যাক্টিভিটি রিসাল্ট পদ্ধতিতে ওভাররাইড করুন। এই হিসাবে FragmentA অন অ্যাক্টিভিটি Result কল হবে।

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

FragmentA.Java ইন, অ্যাক্টিভিটি রিসাল্ট পদ্ধতি override

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("FragmentA.java","onActivityResult called");
}

কল শুরু startActivityForResult(intent, HOMEWORK_POST_ACTIVITY); FragmentA.Java থেকে

কল finish(); SecondActivity.java পদ্ধতি

এই কাজ করবে আশা করি।


onActivityResult ইতিমধ্যে শুরু আছে onActivityResult , যা onActivityResult কল করবে যদি আপনি এটি ব্যবহার করেন তবে getActivity() পরিবর্তে ...





android-fragmentactivity