2015-10-26 90 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