2015-10-26 86 views
-1

我使用带有三个选项卡的Fragmant。 我想输入第一个标签。 所以我做源。 但是,如果我点击按钮两次,'alert.show();'使错误。 我找到很多方法,但我不能解决。关于自定义对话框错误

Tab1.java

package sm.fo3simultor2; 
import... 

@SuppressLint("ValidFragment") 
public class Tab1 extends Fragment { 
Context mContext; 

public Tab1(Context context) { 
    mContext = context; 
} 

@Override 
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
final View view = inflater.inflate(R.layout.activity_tab1, null); 
final View view2 = inflater.inflate(R.layout.activity_alert1, null); 
final Button button1; 
final EditText edittext; 
final TextView textview; 
button1 = (Button) view.findViewById(R.id.button); 
edittext = (EditText) view2.findViewById(R.id.editText); 
textview = (TextView) view.findViewById(R.id.FinalEP); 

final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); 
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
     if (edittext.getText().toString().equals("")) { 
     Toast.makeText(getActivity(), "Error..", Toast.LENGTH_SHORT).show(); 
     dialog.dismiss(); 
     } else { 
     textview.setText(edittext.getText().toString()); 
     Toast.makeText(getActivity(), "OK.", Toast.LENGTH_SHORT).show(); 
     dialog.dismiss();}} 
     } 
    }); 
alert.setView(view2); 
button1.setOnClickListener(new OnClickListener() { 
             @Override 
             public void onClick(View v) { 
             alert.show();} 
); 
return view; 
} 
} 

activity_alert1

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Input" 
    android:id="@+id/textView5" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="10" 
    android:id="@+id/editText" 
    android:layout_below="@+id/textView5" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" /> 

我要让输入框。 请帮帮我。 请查找我的错误。

+2

你得到错误,那么请分享你的LogCat –

+0

顺便说一句,为什么最终的关键词每一个地方? –

+0

删除查看,按钮,EditText,TextView和AlertDialog中的最终关键词 –

回答

1

使用AlertDialog而不是建设者

AlertDialog alert = builder.create (context); 

检查警报已经可见,如果是解除警报,否则表现出来。

if(alert.isShowing()){ 
    alert.dismiss(); 
}else{ 
    alert.show(); 
} 
0

使用这个,如果想用对话来获得输入...

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); 
       alertDialog.setMessage("Your Message"); 

       final EditText input = new EditText(this); 
       LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT); 
       input.setLayoutParams(lp); 
       input.setInputType(InputType.TYPE_CLASS_NUMBER); 

       InputFilter[] filter = new InputFilter[1]; 
       filter[0] = new InputFilter.LengthFilter(3); 

       input.setFilters(filter); 
       alertDialog.setView(input); 

       alertDialog.setPositiveButton("Goto", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) 
          { 
            Toast.makeText(getApplicationContext(), input.getText().toString(), Toast.LENGTH_LONG).show(); 
          } 
         }); 

       alertDialog.setNegativeButton("Cancel", 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           dialog.cancel(); 
          } 
         }); 

       alertDialog.show(); 
+0

谢谢您的帮助 –

+0

欢迎如果此答案可帮助您解决问题,请接受答案... –

0

你必须建立alertdialog,但你还需要创建AlertDialog,所以只需添加这,

AlertDialog alertdialog = alert.create(); 
alertdialog.show(); 
+0

非常感谢:D –

+0

不客气你也需要接受答案。 – Madhur