意图和AlertDialog在片段不能正常工作

问题描述:

我有一个片段,有一些图片,您选择一张图片,然后按下一步转到另一个类来选择朋友。意图和AlertDialog在片段不能正常工作

当您不选择图片时,我想显示一个警告对话框,否则他们应该去选择朋友。

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 
     } 
    } 
}); 

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

+0

你能告诉我们你得到了什么错误。 – adelphus

+0

(pictureFragment.this); * //显示错误*(this,RecipientsActivity.class)*; //显示错误,在android studio中以红色加下划线 – smithyy

+0

当您将鼠标悬停在红线上时,Android Studio会显示什么信息? – adelphus

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

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); 
    } 
} 
+0

这显示和错误mNext =(Button)view.findViewById(R.id.nextButton);并且说这个方法无法访问 – smithyy

+0

这段代码是在哪写的?Insi关于onClick?请提及更多细节。 :) –

+0

请参阅编辑问题 – smithyy

取出*,并通过改变这样的:

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

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

是的,我做了,它仍然不工作 – smithyy

+0

我编辑答案 – amaiaeskisabel

+0

它显示方法mNext =(按钮)视图中的错误.findViewById(R.id.nextButton);说它无法访问 – smithyy

Inside Fragments use getActivity()not this。

试试这个;

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

它在方法中显示错误mNext =(Button)view.findViewById(R.id.nextButton);称其无法访问 – smithyy

+0

有没有可能为您提供完整的片段代码? – Want2bExpert