java - Android FragmentActivity 中按钮 Onclick 出现 NullPointer 异常

标签 java android button android-fragments nullpointerexception

我在我的 Android 应用程序中使用 Fragments,我有两个类,一个是 FirstClass.java,它扩展 FragmentActivity,而 SecondClass 扩展 Fragments,并在其布局文件中包含按钮。 因此,单击该按钮后,我将调用“mylistener”函数,如下所示

    <Button
            android:id="@+id/b1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="4.64"
            android:text="Button" 
            android:onClick="mylistener"
            />

和 FirstClass.java

public class FirstClass extends FragmentActivity {

Button btnSet1;
int mHour = 15; 
int mMinute = 15;

/** This handles the message send from TimePickerDialogFragment on setting Time */
Handler mHandler = new Handler(){
    @Override
    public void handleMessage(Message m){   
        /** Creating a bundle object to pass currently set Time to the fragment */
        Bundle b = m.getData();

        /** Getting the Hour of day from bundle */
        mHour = b.getInt("set_hour");

        /** Getting the Minute of the hour from bundle */
        mMinute = b.getInt("set_minute");

        /** Displaying a short time message containing time set by Time picker dialog fragment */
        Toast.makeText(getBaseContext(), b.getString("set_time"), Toast.LENGTH_SHORT).show();
        btnSet1.getText().toString();
        btnSet1.setText("set_time");            
    }
};


public void mylistener(View v){
    /** Creating a bundle object to pass currently set time to the fragment */
    Bundle b = new Bundle();

    /** Adding currently set hour to bundle object */
    b.putInt("set_hour", mHour);

    /** Adding currently set minute to bundle object */
    b.putInt("set_minute", mMinute);

    /** Instantiating TimePickerDialogFragment */
    TimePickerDialogFragment timePicker = new TimePickerDialogFragment(mHandler);

    /** Setting the bundle object on timepicker fragment */
    timePicker.setArguments(b);             

    /** Getting fragment manger for this activity */
    FragmentManager fm = getSupportFragmentManager();               

    /** Starting a fragment transaction */
    FragmentTransaction ft = fm.beginTransaction();

    /** Adding the fragment object to the fragment transaction */
    ft.add(timePicker, "time_picker");

    /** Opening the TimePicker fragment */
    ft.commit();        
   };
 }

现在我可以在按钮的 OnClick 上获得计时器对话框,当尝试在按钮中显示该时间格式时出现 NullPointer 异常,我知道此异常是因为 FirstClass FragmentActivity 中的按钮声明不存在于此,请帮助我来解决这个问题。

03-09 10:40:53.222: E/AndroidRuntime(23637): java.lang.NullPointerException
03-09 10:40:53.222: E/AndroidRuntime(23637):    at com.bikepooling.FirstClass$1.handleMessage(FirstClass.java:63)
03-09 10:40:53.222: E/AndroidRuntime(23637):    at android.os.Handler.dispatchMessage(Handler.java:110)
 03-09 10:40:53.222: E/AndroidRuntime(23637):   at android.os.Looper.loop(Looper.java:193)
 03-09 10:40:53.222: E/AndroidRuntime(23637):   at android.app.ActivityThread.main(ActivityThread.java:5292)
 03-09 10:40:53.222: E/AndroidRuntime(23637):   at java.lang.reflect.Method.invokeNative(Native Method)
 03-09 10:40:53.222: E/AndroidRuntime(23637):   at java.lang.reflect.Method.invoke(Method.java:515)
  03-09 10:40:53.222: E/AndroidRuntime(23637):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
 03-09 10:40:53.222: E/AndroidRuntime(23637):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)

最佳答案

不需要这个方法,

public void mylistener(View v)

使用这个

返回 new TimePickerDialog(Common.con, mTimeSetListener2, pHour, pMinute, false);

并初始化 ex 的按钮

btn = view.findviewbyid(...);

希望一切顺利

关于java - Android FragmentActivity 中按钮 Onclick 出现 NullPointer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28935656/

相关文章:

java - 如果我想在 arraylist 中搜索一个元素,那 Big-Theta 是什么?

java - 使用 AsyncTask 时无法从 HttpURLConnection.getResponseCode 接收值?

c# - WPF/C# : Creating a button style: Text + Image

ios - 如何在 iOS 中将对象传递给 NextViewController?

java - 为什么同步方法允许多个线程并发运行?

java - 使用堆栈的汉诺塔 - 空堆栈异常

java - 如何将 inputStream 对象发送到 Java EJBean?

android - 回合制游戏,哪种抽奖方式好?

android - 单击通知不会启动 Activity

button - 对齐 appBar 下方的按钮,在 flutter 中没有任何空间