我在tabhost里面放了一个Edittext,目的是要让他能够弹出一个datepickdialog输入日期,可以是现在遭遇到一个问题就是他在开启app的时候和tab切换的时候会自动弹出来,请问这种问题要如何解决?

ericrock 发布于 2015/03/26 11:49
阅读 311
收藏 0

public class MainActivity extends Activity {
 
 private TabHost tabhost;//Tabhost物件
 private Button btnReset=null;//重置按鈕
 private EditText inspectionDate = null; // 待檢日期
 private EditText estimatedByDate = null;// 預計放行日期
 private EditText printDate = null;// 打印日期
 private EditText classesOfProduction = null;// 生產班次
 private EditText classesOfQualityInspection = null;// 質檢班次
 private EditText responsibilitySection = null;// 責任工段
 private EditText items = null;// 品項
 private EditText specification = null;// 規格
 private EditText productline = null;// 生產線
 private EditText inspectionTime = null;// 待檢時間
 private EditText numberOfInspection = null;// 待檢數量(件)
 private EditText tonsOfInspection = null;// 待檢數量(噸)
 private EditText resultsOfInspection = null;// 待檢原因
 private EditText theSolutionMethod = null;// 處理方法
 private EditText preventiveMeasures = null;// 預防措施
 private EditText resultsOfTrackingVerification = null;// 跟蹤驗證結果
 private EditText soulutionTime = null;// 處理時間
 private EditText solutionProcess = null;// 處理過程
 private EditText soulutionResults = null;// 處理結果
 private EditText soulutionNumbers = null;// 處理數量
 private EditText notice = null;// 備註
 Calendar calendar; //日曆
   
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.demo);
  
  initview();
  
        //tabhost
  tabhost.setup();

  tabhost.addTab(tabhost.newTabSpec("one").setIndicator("新增")
    .setContent(R.id.widget_layout_red));
  tabhost.addTab(tabhost.newTabSpec("two").setIndicator("列表")
    .setContent(R.id.widget_layout_yellow));
  
        //預計放行日期
  estimatedByDate.setOnFocusChangeListener(new OnFocusChangeListener() {

   @Override
   public void onFocusChange(View v, boolean hasFocus) {
    // TODO Auto-generated method stub

    if (hasFocus) {
     DatePickerDialog datePickerDialog = new DatePickerDialog(
       MainActivity.this, Dateset, calendar
         .get(calendar.YEAR), calendar
         .get(calendar.MONTH), calendar
         .get(calendar.DAY_OF_MONTH));

     datePickerDialog.show();
    }
   }
  });
  
  //重置按鈕
  btnReset.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    
    
       btnReset.setFocusable(true);
       btnReset.requestFocus();
       btnReset.setFocusableInTouchMode(true);
      
       DatePickerDialog datePickerDialog = new DatePickerDialog(
      MainActivity.this, Dateset, calendar
        .get(calendar.YEAR), calendar
        .get(calendar.MONTH), calendar
        .get(calendar.DAY_OF_MONTH));

    datePickerDialog.show();
   
   }
  });
 }
   
 private void initview(){
  
  tabhost = (TabHost) findViewById(R.id.mytab);
  btnReset=(Button)findViewById(R.id.buttonreset);
     estimatedByDate = (EditText) findViewById(R.id.estimatedByDate);
  calendar = calendar.getInstance();
     
    }
 
 DatePickerDialog.OnDateSetListener Dateset = new DatePickerDialog.OnDateSetListener() {

  @Override
  public void onDateSet(DatePicker view, int year, int monthOfYear,
    int dayOfMonth) {

   calendar.set(Calendar.YEAR, year);
   calendar.set(Calendar.MONTH, monthOfYear);
   calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

   String str = year + "-" + (monthOfYear + 1) + "-" + dayOfMonth;
   System.out.println("set is " + str);

   if (estimatedByDate.isFocused()) {
    estimatedByDate.setText(str);
   }
   
   if(btnReset.isFocused()){
    
    estimatedByDate.setText(str);
   }

  }

 };

}

(附上代碼,如果有人知道錯在那,麻煩指正我的錯誤)

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mytab"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </TabWidget>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >

            <LinearLayout
                android:id="@+id/widget_layout_red"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#ffffff"
                android:orientation="vertical" >
               
                <TableRow
                                android:id="@+id/tableRow1"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content" >
                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="预计放行日期" />

                <EditText
                    android:id="@+id/estimatedByDate"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="date" >

                    <requestFocus />
                </EditText>

                <Button
                    android:id="@+id/buttonreset"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="重置" />
               </TableRow>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/widget_layout_yellow"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#FCD209"
                android:orientation="vertical" >
               
                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="增加" />

                <EditText
                    android:id="@+id/estimatedByDate1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="date" >

                    <requestFocus />
                </EditText>
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>

</TabHost>

加载中
0
依然傻笑
依然傻笑

在第一个edittext前面  加入这个。

<View

           android:focusable="true"

           android:focusableInTouchMode="true"

           android:layout_width="0px" 

           android:layout_height="0px"/>

0
Mybrc91
Mybrc91
应该是焦点问题吧
ericrock
ericrock
回复 @ericrock : OK了解,謝謝你
Mybrc91
Mybrc91
回复 @ericrock : 给他的父控件设置焦点就可以了,随便哪层父控件 android:focusable="true" android:focusableInTouchMode="true"
ericrock
ericrock
焦點問題?請問可以說得具體一點嗎?感謝
0
貌似掉线
貌似掉线
既然是要弹出对话框来输入日期的,其实也没必要用edittext. TextView就可以。或者是,设为不可编辑。给它个点击事件,点击后弹出对话框即可。
0
ericrock
ericrock

成功了~很感謝你,不過還是很想知道為什麼加這個view就不會彈出?

0
ericrock
ericrock

引用来自“依然傻笑”的评论

在第一个edittext前面  加入这个。

<View

           android:focusable="true"

           android:focusableInTouchMode="true"

           android:layout_width="0px" 

           android:layout_height="0px"/>

OK

,成功了~很感謝你,不過還是很想知道為什麼加這行就不會彈出

返回顶部
顶部