Нажатие кнопки делает спиннер видимым на другом экране - PullRequest
2 голосов
/ 09 июня 2011

Я пытаюсь закодировать кнопку onClickevent на экране 1, которая делает счетчик видимым или невидимым, в зависимости от потребностей, в результате на экране 2.

Зная, что на экране 1 есть несколько кнопоккоторый использует те же виды или виджеты на втором экране, я думал об этом, чтобы использовать один экран для всех этих действий.

Было бы хорошо, если бы кто-то знал и объяснил мне, как решить эту проблему.

Я прикреплю код Java только для того, чтобы посмотреть на него.

public class screen1 extends Activity {

    private View spinner1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.screen1);

        spinner1 = findViewById(R.id.spinner1);
        Button A = (Button) findViewById(R.id.b_A);

     // error output: Cannot instantiate the type View.OnClickListener
            A.setOnClickListener(new View.OnClickListener());
        A.setOnClickListener(mVisibleListener);
        }   

                        @Override
// error output behind the line 'public void':The method onClick(View) of type screen1 must override or implement a supertype method

            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                startActivity(new Intent("com.jack.test.SCREENMENU"));

            }
            OnClickListener mVisibleListener = new OnClickListener(){
                public void onClick(View v){
                    spinner1.setVisibility(View.VISIBLE);{
        };    
                       // the rest is ok from here to down.

Ответы [ 2 ]

1 голос
/ 09 июня 2011

У вас, кажется, есть некоторые серьезные проблемы с кодом в дополнение к тому, что вы просите. К счастью, если я вас правильно понимаю, то, что вы хотите, легко исправить:

@Override
public void onClick(DialogInterface dialog, int which)
{
    if (need_is_met)
        {
        if (spinner1.getVisibility() == View.INVISIBLE)
            view.setVisibility(View.VISIBLE);
        else
            view.setVisibility(View.INVISIBLE);
        }
}

need_is_met - логическое значение ... это насколько я могу понять с вашим утверждением "зависит от потребностей"

насколько остальная часть вашего кода должна выглядеть так:

public class screen1 extends Activity
    {

    private View spinner1;

    @Override
    protected void onCreate(Bundle savedInstanceState)
        {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.screen1);
        boolean need_is_met = true; // you can change this or have it set based on something later if you want
        spinnerAutomerk = findViewById(R.id.spinnerAutomerk);
        button_A = (Button) findViewById(R.id.b_A);

        button_A.setOnClickListener(new View.OnClickListener()
            {
            @Override
            public void onClick(View v)
                {
                if (need_is_met)
                    {
                    if (spinnerAutomerk.getVisibility() == View.INVISIBLE)
                        spinnerAutomerk.setVisibility(View.VISIBLE);
                    else
                spinnerAutomerk.setVisibility(View.INVISIBLE);
                    }
            }
            }
        }
    }

что-то в этом роде. я убрал все requestWindowFeature, windowFlag и т. д., потому что гораздо аккуратнее поместить это в ваш манифест:

...
<application
    android:icon="@drawable/icon" 
    android:label="@string/app_name"
    >
  <activity
        android:name=".Screen1"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
...

эта последняя строка, бит темы, настроит вас на любую из множества тем (таких как темная, светлая, прозрачная и т. Д.), Которые только что получили R.style и ctrl-F для theme и вы увидите, что есть номер на выбор. По аналогии с этим они могут убить заголовок и панель уведомлений, если хотите. также я не установил net_is_met на что-то, потому что я не знаю, о чем остальная часть вашего кода.

0 голосов
/ 09 июня 2011

Прежде всего вам нужно иметь screen2 в качестве другого действия, если вы хотите, чтобы он открывался при нажатии и показывал счетчик (не уверен, что это именно то, что вы имели в виду).

Вы должны использовать намерения для переключенияк деятельности screen2.Существует миллиард примеров того, как это сделать, если вы воспользуетесь Google.

Вы бы использовали логическое выражение, чтобы проверить, выполнены ли определенные требования:

Boolean Reqs = false;
If(req_met){
    Reqs = true;
} else {
    Reqs = false;
}

Используйте этот тип формата, затемпроверять, является ли Reqs истинным или нет, при отправке намерения проверить, виден ли счетчик или нет (я бы использовал другое намерение для этого)

...