149

私は Android 開発にまったく慣れていないので、Preferences に出くわしました。ログイン機能を見つけPreferenceScreenて作成したいと思いました。私が持っている唯一の問題は、「ログイン」ボタンを に追加する方法がわからないことPreferenceScreenです。

これが私のPreferenceScreen見た目です:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
...
    <PreferenceScreen android:title="@string/login" android:key="Login">
        <EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
        <EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
    </PreferenceScreen>
...
</PreferenceScreen>

Button は 2 つの のすぐ下にあるはずEditTextPreferenceです。

この問題の簡単な解決策はありますか? sub を使用しているため、見つけた1つの解決策は機能しませんでしたPreferenceScreen

アップデート:

この方法でボタンを追加できることがわかりました:

<PreferenceScreen android:title="@string/login" android:key="Login">
        <EditTextPreference android:persistent="true" android:title="@string/username" android:key="Username"></EditTextPreference>
        <EditTextPreference android:title="@string/password" android:persistent="true" android:password="true" android:key="Password"></EditTextPreference>
        <Preference android:layout="@layout/loginButtons" android:key="loginButtons"></Preference>
</PreferenceScreen>

レイアウト ファイル ( loginButtons.xml) は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:weightSum="10" 
    android:baselineAligned="false" android:orientation="horizontal">
    <Button android:text="Login" android:layout_width="fill_parent"
        android:layout_weight="5" android:layout_height="wrap_content"
        android:id="@+id/loginButton" android:layout_gravity="left"></Button>
    <Button android:text="Password?" android:layout_width="fill_parent"
        android:layout_weight="5" android:layout_height="wrap_content"
        android:id="@+id/forgottenPasswordButton"></Button>
</LinearLayout>

ボタンが表示されるようになりましたが、コードでアクセスできません。私はそれを試しましたfindViewById()が、これはnullを返しています。これらのボタンにアクセスする方法はありますか?

4

10 に答える 10

332

xmlの場合:

<Preference
    android:title="Acts like a button"
    android:key="@string/myCoolButton"
    android:summary="This is a cool button"
/>

次に、Javaの場合onCreate()

Preference button = findPreference(getString(R.string.myCoolButton));
button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) { 
        //code for what you want it to do 
        return true;
    }
});

これは、タイトルと要約だけが付いた通常の設定のように表示されるため、属しているように見えます。

于 2011-08-31T01:11:52.877 に答える
38

設定に終了リンクを追加したかったので、Jakar のコードを次のように変更することができました。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >   
   <PreferenceCategory android:title="Settings">
       <Preference android:title="Click to exit" android:key="exitlink"/>       
   </PreferenceCategory>    
</PreferenceScreen>

もともと「Preference」は、私が手作業で編集した「EditTextPreference」でした。

次に、クラスで:

public class MyPreferences extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.mypreferences);

    Preference button = (Preference)getPreferenceManager().findPreference("exitlink");      
    if (button != null) {
        button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference arg0) {
                finish();   
                return true;
            }
        });     
    }
}
}
于 2012-07-26T18:56:13.480 に答える
8

追加

setContentView(R.layout.buttonLayout);

addPreferencesFromResource(R.xml.yourPreference);

ボタンレイアウト:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout
        android:id="@+id/top_control_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
</RelativeLayout>

<LinearLayout
        android:id="@+id/bottom_control_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

    <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:text="@string/saveAlarm"/>
</LinearLayout>

<ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_above="@id/bottom_control_bar"
        android:layout_below="@id/top_control_bar"
        android:choiceMode="multipleChoice">
</ListView>

アクセスボタン:

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //Your event
    }
});

ボタンを RelativeLayout に配置することで、画面の上部または下部にボタンを配置できます。

  • top_control_bar
  • ボトムコントロールバー

ボトムコントロールバー

これは私にとってはうまくいきました。このコードで誰かを助けることができれば幸いです。

于 2013-09-11T09:47:36.540 に答える
1

このようにしてボタンにアクセスできます!

 View footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layoutButtons, null, false);

layoutButtons.xmlandroid:idのボタンを含むLinearLayoutに追加することを忘れ ないでください。android:id="@+id/mylayout"

 LinearLayout mLayout = (LinearLayout) footerView.findViewById(R.id.mylayout);
 Button login = (Button) footerView.findViewById(R.id.loginButton);
 login.setOnClickListener(this);
 ListView lv = (ListView) findViewById(android.R.id.list);
 lv.addFooterView(footerView);

 // Lines 2 and 3 can be used in the same way for a second Button!
于 2011-06-01T06:59:52.513 に答える
1

ボタンを設定画面に追加する簡単な方法はないと思います。設定は次のように制限されています。

EditTextPreference
ListPreference
RingtonePreference
CheckboxPreference

設定画面を使用している間は、これらのオプションの使用に制限されており、必要に応じて簡単に使用できる単一の「ボタン設定」はありません。

設定画面にボタンを追加して同様の機能を探していましたが、独自の実装で設定の変更を管理して、独自の画面を作成する必要があるようです。

于 2011-03-14T12:21:18.403 に答える
1

をオーバーライドして、プリファレンスのレイアウトをカスタマイズすることもできますPreference.onCreateView(parent)。以下の例では、匿名の内部クラスを使用して赤の設定を行います。

    screen.addPreference(
        new Preference(context) {
            @Override
            protected View onCreateView(ViewGroup parent) {
                View view = super.onCreateView(parent);
                view.setBackgroundColor(Color.RED);
                return view;
            }
        });

この手法を使用して、デフォルト ビューにボタンを追加できます。

于 2016-05-03T17:10:29.310 に答える
-2

android:onClick="myMethod" を試してください単純な onclick イベントの魅力のように機能します

于 2011-09-03T06:41:51.087 に答える