简体   繁体   English

使用意图方法调用活动

[英]Call activity using intent method

I know that Android OS need paramterles constructor to recreate Activity and i could use bundle to pass some arguments if required as follows:我知道 Android 操作系统需要 paramterles 构造函数来重新创建 Activity,如果需要,我可以使用 bundle 来传递一些参数,如下所示:

private void OpenOtherActivityWindow_Click(object sender, EventArgs e)

{
      Intent nextActivity = new Intent(this, typeof(ThirdActivity));
      Dog mydog = new Dog("mydogName");
      Bundle bundle = new Bundle();
      bundle.PutSerializable("mydoggy", mydog);
      nextActivity.PutExtra("RowID", Convert.ToString(10));
      nextActivity.PutExtras(bundle);
      StartActivity(nextActivity);
}

[Activity(Label = "ThirdActivity")]
 public class ThirdActivity : Activity
 {
       protected override void OnCreate(Bundle savedInstanceState)
       {
            base.OnCreate(savedInstanceState);

            // Create your application here
            SetContentView(Resource.Layout.third);

            //Receive values if any from previous activity
            if (!Intent.HasExtra("mydoggy")) return;
            Dog tryme = (Dog)Intent.GetSerializableExtra("mydoggy");
            if (!Intent.HasExtra("RowID")) return;
            string text = Intent.GetStringExtra("RowID") ?? "0";
        }
}

Nevertheless is it possible to create static method which would return intent for me from given parameters like?:然而,是否可以创建静态方法,该方法将从给定的参数返回给我的意图,例如?:

static Intent CreateIntent(Dog dog, int rowID)

If so could someone show me then how it could look like as opposite to whati show in my code please.如果是这样,有人可以向我展示它与我在代码中显示的内容相反的样子。

I don't know the details of your ThirdActivity , but I could achieve the similar function by creating a simple demo.我不知道你的ThirdActivity的细节,但我可以通过创建一个简单的演示来实现类似的功能。 You can check the code here.您可以在此处查看代码。

   [Activity(Label = "MovieDetailActivity")]
public class MovieDetailActivity : Activity
{
    public  TextView textView;

    public  static MovieModel mMoviemodel;// define your model here

    public  static int mRowID;  // define a int variable mRowID


    public  static Intent createIntent(Context context, MovieModel movie, int rowID)
    {
        Intent intent = new Intent(context, typeof(MovieDetailActivity));
        //Pass parameters here

        mMoviemodel = movie; 
        mRowID = rowID;

        return intent;
    }


  protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Create your application here
        SetContentView(Resource.Layout.detaillayout);

        textView = FindViewById<TextView>(Resource.Id.info_textview);

        textView.Text = "movie name:" + mMoviemodel.mMovieName + " text = " + mRowID;

    }
}

Usage:用法:

   // pass your Object model
    StartActivity( MovieDetailActivity.createIntent(this, movie,10));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM