2013-04-13 37 views
0

我想让我的ProgressBar在单击登录按钮时变为可见。这里是我的XML的活动:设置一个ProgressBar在可见点击在Android

<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:gravity="center_vertical" 
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" > 

<EditText 
    android:id="@+id/txtView_UserName" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="20dp" 
    android:hint="@string/login_username_hint"> 

    <requestFocus /> 
</EditText> 

<EditText 
    android:id="@+id/txtView_Password" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/txtView_UserName" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="5dp" 
    android:hint="@string/login_password_hint" 
    android:inputType="textPassword" /> 

<Button 
    android:id="@+id/button_LogIn" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/txtView_UserName" 
    android:layout_below="@+id/txtView_Password" 
    android:layout_marginTop="10dp" 
    android:onClick="logIn" 
    android:text="@string/login_button" /> 

<CheckBox 
    android:id="@+id/checkbox_RememberPassword" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/txtView_Password" 
    android:layout_below="@+id/button_Login" 
    android:layout_marginTop="15dp" 
    android:text="@string/remember_my_password" /> 

<CheckBox 
    android:id="@+id/checkbox_LogMeInAutomatically" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/checkbox_RememberPassword" 
    android:layout_below="@+id/checkbox_RememberPassword" 
    android:layout_marginTop="-5dp" 
    android:text="@string/log_me_in_automatically" /> 

<ProgressBar 
    android:id="@+id/progressBar_LogIn" 
    style="?android:attr/progressBarStyleLarge" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/checkbox_LogMeInAutomatically" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="30dp" 
    android:visibility="invisible" /> 

<TextView 
    android:id="@+id/txtView_Version" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="18dp" 
    android:text="@string/version_number" /> 

</RelativeLayout> 

而这里就是我试图将其更改为可见的代码。

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.ProgressBar; 

public class MainActivity extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

//Get Views and Buttons 
EditText txt_Username = (EditText) findViewById(R.id.txtView_UserName); 
EditText txt_Password = (EditText) findViewById(R.id.txtView_Password); 
Button btn_LogIn = (Button) findViewById(R.id.button_LogIn); 
CheckBox chkbox_RememberMyPassword = (CheckBox) findViewById(R.id.checkbox_RememberPassword); 
CheckBox chkbox_LogMeInAutomatically = (CheckBox) findViewById(R.id.checkbox_LogMeInAutomatically); 
ProgressBar progressbar_LogIn = (ProgressBar) findViewById(R.id.progressBar_LogIn);  

public void logIn() { 
    progressbar_LogIn.setVisibility(0); 
} 

} 

该程序崩溃而不呈现我的活动的视图。有任何想法吗?

+0

它是如何崩溃的?有没有我们可以使用的logcat错误? –

+0

我看到空指针异常,但并不是说真的在哪里。 –

+0

你是否在onCreateView中获得视图和按钮? –

回答

0

我有一种感觉,因为你有一个onClick登录,但登录不采取查看参数。尝试以编程方式设置按钮的onclick,而不是使用xml。

编辑:尝试改变

public void logIn() { 
progressbar_LogIn.setVisibility(0); 

}

public void logIn(View v) { 
progressbar_LogIn.setVisibility(0); 

}

或将其设置编程

btn_LogIn.setOnClickListener(new OnClickListener(){ 
     @Override 
     public void onClick(View arg0) { 
      //CODE GOES HERE 
     } 
    }); 

进一步编辑:

也注意到,世界上没有一个onCreateView的迹象,以便确保所有的视图代码内,或至少里面的onCreate的:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
} 
+0

仍然坠毁。我如何以编程方式设置onClick按钮? –

+0

编辑添加编程。如果以这种方式添加,请确保删除XML中的旧onClick –

+0

是与OnCreate不同的OnCreateView(请参阅上面的代码)? –