Intent补充

当从mainactivity传递数据到childactivity时,在childactivity中获得intent后不要立即获取数据,而应该检测获取到的Intent中是否还有数据,如下:

public class ChildActivity extends AppCompatActivity {
    /* Field to store our TextView */
    private TextView mDisplayText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_child);

        /* Typical usage of findViewById... */
        mDisplayText = (TextView) findViewById(R.id.tv_display);
        Intent intent = getIntent();
        if(intent.hasExtra(Intent.EXTRA_TEXT)){
            String stringExtra = intent.getStringExtra(Intent.EXTRA_TEXT);
            mDisplayText.setText(stringExtra);
        }

    }
}

隐式intent在调用startActivity之前应该首先判断是否包含有打开该隐式Intent的可用软件,如下:

private void showMap(Uri mapUri){
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(mapUri);
    if(intent.resolveActivity(getPackageManager()) != null){
        startActivity(intent);
    }
}
private void shareText(String shareString){
    String mimeType = "text/plain";
    String title = "Share your interests";
    ShareCompat.IntentBuilder intentBuilder = ShareCompat.IntentBuilder.from(this)
            .setChooserTitle(title)
            .setType(mimeType)
            .setText(shareString);
    Intent intent = intentBuilder.getIntent();
    if(intent.resolveActivity(getPackageManager()) != null){
        startActivity(intent);
    }
}
public void onClickShareTextButton(View v) {
    String shareToString = "hello everyone, i am here waiting for you!";
    shareText(shareToString);
}

猜你喜欢

转载自blog.csdn.net/yao_94/article/details/81215466