2015-05-21 27 views
1

這是我第一次使用PreferenceActivity無法使用PreferenceActivity中的按鈕調用方法

我做了一個設置屏幕的簡單活動,當我在佈局中設置一個按鈕併爲該按鈕設置onClickListener時,沒有任何操作,也沒有任何錯誤。

我想要做的就是通過按下按鈕將用戶返回主屏幕。有錯誤或我錯過了一些設置嗎?

神祕的部分是xml onClick也沒有直接的方法調用工作。沒有動作,沒有錯誤,它甚至沒有顯示Toast(當爲了調試而改變時)。有沒有人真的使用過PreferenceActivity並使用了一些按鈕之類的小部件?

下面是設置屏幕

public class Settings extends PreferenceActivity { 

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

//This button doesn't work 
      Button b = (Button)findViewById(R.id.setupid); 
      b.setOnClickListener(new View.OnClickListener(){ 

       @Override 
       public void onClick(View v) { 

      Intent i = new Intent(Settings.this,HomeActivity.class); 
      startActivity(i); 

       } 
      }); 
      getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); 



     } 



     public static class MyPreferenceFragment extends PreferenceFragment 
     { 
      @Override 
      public void onCreate(final Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       addPreferencesFromResource(R.xml.preferences); 
      } 


     } 

    } 

這裏我的示例活動的Settings.java

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 

    <ListView android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="5" /> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#3498db" 
     android:gravity="center" 

     > 


     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="50dp" 
      android:text="Set" 

      android:id="@+id/setupid" /> 
    </LinearLayout> 
</LinearLayout> 
+1

如果在PreferenceActivity的開始放置代碼以啓動HomeActivity,會發生什麼情況?或者在你的'onClick'裏面顯示一個'android.widget.Toast'? –

+0

我很好奇你如何設置'PreferenceActivity'和'PreferenceFragment'? 'PreferenceActivity'不支持片段,它從'ListActivity'擴展。 – hidro

+0

這是可能的。 http://rominirani.com/android-preferences-tutorial/ – user3264924

回答

1

的XML佈局你沒有使用片段擺在首位。你所要做的就是使用addPreferencesFromResource(R.xml.preferences);在setContents視圖下。

public class Settings extends PreferenceActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_settings); 
      //It is depricated but it works 
      addPreferencesFromResource(R.xml.preferences); 

      Button b = (Button)findViewById(R.id.setupid); 
      b.setOnClickListener(new View.OnClickListener(){ 

       @Override 
       public void onClick(View v) { 

      Intent i = new Intent(Settings.this,HomeActivity.class); 
      startActivity(i); 

       } 
      }); 
      //getFragmentManager().beginTransaction().replace(android.R.id.content, //new MyPreferenceFragment()).commit(); 



     } 


    } 
+1

謝謝你的樣品!但我仍然對addPreferencesFromResource(R.xml.preferences)必須使用的東西感到好奇;因爲它已被棄用。但是,它現在可以解決問題。 – user3264924