繁体   English   中英

在同一活动中使用宗地和意图

[英]Using parcelable and intent in the same activity

我在同一活动中使用2个意图。其中一个用于输入名字,姓氏和ID。其他意图用于将数据发送到另一个活动。 但是,当我使用类似的意图时,这些代码将无法正常工作。 我可以使用这样的意图吗

intent.putExtra("lastName", intent2.getString("lastName"));

搜索活动

Intent intent  = new Intent(getApplicationContext(),SearchActivity.class);
Bundle b=new Bundle();
b.putString("firstName", firstName);
b.putString("lastName", lastName);
b.putString("id", id);
b.putParcelable("LoginPartClass",lp2);
intent.putExtras(b);
startActivity(intent);

搜索活动代码

        final Bundle intent2 = getIntent().getExtras();
        Intent intent = new Intent(getApplicationContext(),AnotherActivity.class);
        intent.putExtra("keywords", keywords);
        if(intent2!=null) {
           final String Firstname=intent2.getString("firstName");
           intent.putExtra("firstName", Firstname);  }
           intent.putExtra("lastName", intent2.getString("lastName"));
           intent.putExtra("id", intent2.getString("id"));
        }
        startActivity(intent);

可分割类

public class LoginPart implements Parcelable{

private Token requestoken;
private OAuthService s;
private String authURL;


public LoginPart(Token Token, OAuthService S, String AuthURL) {
    requestoken = Token;
    s = S;
    authURL = AuthURL;
}

public LoginPart( ) {

}


public Token getRequestoken() {
    return requestoken;
}

public void setRequestoken(Token requestoken) {
    this.requestoken = requestoken;
}

public OAuthService getS() {
    return s;
}

public Parcelable getSParcelable() {
    return (Parcelable) s;
}
public void setS(OAuthService s) {
    this.s = s;
}

public String getAuthURL() {
    return authURL;
}

public void setAuthURL(String authURL) {
    this.authURL = authURL;
}

public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

public void writeToParcel(Parcel dest, int flags) {
    // TODO Auto-generated method stub
    dest.writeValue(requestoken);
    dest.writeValue(s);
    dest.writeValue(authURL);

}

 }

问题与Parcable类有关,当我使用parceable类时发生崩溃,我该如何解决?

在您的第一个活动中:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    Bundle b = new Bundle();
    b.putInt("id", 1);
    b.putString("firstName", "this is my first name");
    b.putString("lastName", "this is my last name");
    intent.putExtras(b);
    startActivity(intent);

在第二个活动中:

Bundle b =getIntent().getExtras();



    String name  =b.getString("firstName");
    String lastname  =b.getString("lastName");

像这样搅动您的LoginPart类...

public class LoginPart implements Parcelable {
    private Token requestoken;
    private OAuthService s;
    private String authURL;


    public LoginPart(Token Token, OAuthService S, String AuthURL) {
        requestoken = Token;
        s = S;
        authURL = AuthURL;
    }

    public LoginPart( ) {

    }

    public LoginPart(Parcel parcel) {
        requestoken = parcel.readValue(getClassLoader());
        s = parcel.readValue(getClassLoader());
        authURL = parcel.readValue(getClassLoader());
    }


    public Token getRequestoken() {
        return requestoken;
    }

    public void setRequestoken(Token requestoken) {
        this.requestoken = requestoken;
    }

    public OAuthService getS() {
        return s;
    }

    public Parcelable getSParcelable() {
        return (Parcelable) s;
    }
    public void setS(OAuthService s) {
        this.s = s;
    }

    public String getAuthURL() {
        return authURL;
    }

    public void setAuthURL(String authURL) {
        this.authURL = authURL;
    }

    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub
        dest.writeValue(requestoken);
        dest.writeValue(s);
        dest.writeValue(authURL);
    }

    public static final Parcelable.Creator<LoginPart> CREATOR = new Creator<SecondActivity.LoginPart>() {

        @Override
        public LoginPart[] newArray(int size) {
            return new LoginPart[size];
        }

        @Override
        public LoginPart createFromParcel(Parcel source) {
            return new LoginPart(source);
        }
    };
}

为此,您的Token类和OAuthService类应实现Parcelable

暂无
暂无

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

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