片段中的 Intent 和 AlertDialog 不起作用

Intent and AlertDialog in fragment not working

我有一个片段有一些图片,你select一张图片然后按下一步去另一个class给select朋友。

当你没有 select 图片时,我想显示一个警告对话框,否则他们应该去 select 朋友。

protected TextView mMessage;
mMessage = (TextView) view.findViewById(R.id.Text);
final String userMessage = mMessage.getText().toString();

mNext = (Button) view.findViewById(R.id.nextButton);
mNext.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (userMessage.equals("") || userMessage.equals(null)) { 
            AlertDialog.Builder builder = new AlertDialog.Builder(messageFragment.this.getActivity());
            builder.setTitle("oops");
            builder.setMessage("Make sure you take a pic");
            builder.setPositiveButton(android.R.string.ok, null);
            AlertDialog dialog = builder.create();
            dialog.show();
        } else {
            //blahh
        }
    }
});

即使我在文本视图中有文本,也会显示警告对话框。

去掉 * 并将其更改为:

    Intent recipientsIntent = new Intent(v.getContext(),RecipientsActivity.class);
    startActivity(recipientsIntent);

    Intent recipientsIntent = new Intent(pictureFragment.this.getActivity(), RecipientsActivity.class.class);
    startActivity(recipientsIntent);

之所以出现这个错误是因为pictureFragment.this是一个片段。它必须是 activity 才能工作,所以试试这个:

private TextView mMessage;
mMessage = (TextView) view.findViewById(R.id.text);

//On Button Click...
@Override
public void onClick(View v) {
    String userMessage = mMessage.getText().toString();
    if (userMessage.equals(null) || userMessage.equals("") || userMessage.isEmpty()) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("oops");
        builder.setMessage("Make sure select a pic");
        builder.setPositiveButton(android.R.string.ok, null);
        AlertDialog dialog = builder.create();
        dialog.show();
    } else {
        Intent recipientsIntent = new Intent (getActivity(), RecipientsActivity.class);
        startActivity(recipientsIntent);
    }
}

Inside Fragments 使用 getActivity() 而不是这个。

试试这个;

Intent recipientsIntent = new  Intent(getActivity(),RecipientsActivity.class);
startActivity(recipientsIntent);