2

設定ボタンをクリックすると、タブを含む別のアクティビティに移動する必要があるアプリケーションが 1 つあります。私はすべてのコードを構築し、Acer タブでうまく機能しています。Samsung Galaxy (4.1.1) で同じアプリケーションを実行すると、「残念ながら、アプリが停止しました」というエラーが表示されます。以下の私のコードをチェックしてください:

settingsBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent prefIntent = new Intent(v.getContext(), Preferences.class);
                startActivityForResult(prefIntent, 0);
           }
    });

//Preferences.java

   setContentView(R.layout.preferences);
    private Button pref_close;
    pref_close   = (Button) findViewById(R.id.close_prefs);
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK);
    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("wifi").setIndicator("Wifi Settings",null).setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent(this, AppSettings.class);
    spec = tabHost.newTabSpec("settings").setIndicator(" Clock Settings",null).setContent(intent);
    tabHost.addTab(spec);
    tabHost.setCurrentTab(0);

    pref_close.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //finish();
                             setResult(RESULT_OK);
        }
    });

startActivityForResult() にコメントすると、アプリが強制的に閉じられず、preference.java ファイルが呼び出されないときに問題が発生します。私のlogcatにはエラーが表示されますが、次のように表示されます

03-28 11:30:37.734: E/AndroidRuntime(4668): java.lang.RuntimeException: Unable to resume activity {com.vision.clock/com.vision.clock.activity.Preferences}: java.lang.RuntimeException: Unable to resume activity {com.android.settings/com.android.settings.wifi.WifiPickerActivity}: java.lang.SecurityException: Given caller package com.android.settings is not running in process ProcessRecord

私は問題を見つけるための解決策を得ていません..誰でも解決策を見つけることができますか.

前もって感謝します...

4

3 に答える 3

0
settingsBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent prefIntent = new Intent(v.getApplicationContext(), Preferences.class);
                startActivityForResult(prefIntent, 0);
           }
    });

v.getContext() を v.getApplicationContext() に変更します

于 2013-03-28T12:05:26.240 に答える
0

Preference アクティビティから最初のアクティビティにデータを返さないため、そもそも startActivityForResult を実装する必要はありません。

最初のアクティビティ:

settingsBtn.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent prefIntent = new Intent(v.getContext(), Preferences.class);
                startActivityForResult(prefIntent);
           }
    });

設定アクティビティ:

pref_close.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            finish();

        }
    });
于 2013-03-28T14:39:16.960 に答える
0

最初の活動

 settingsBtn.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent prefIntent = new Intent(v.getContext(), Preferences.class);
            startActivityForResult(prefIntent, 0);
       }
});

 ////this one add to your first activity after oncreate close

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data); 

    if (resultCode == RESULT_OK) {
       // your code  
             }
         } 

Preferences.java

  pref_close.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) { 

      setResult(RESULT_OK);
      finish();
    }
});
于 2013-03-29T04:30:10.327 に答える