Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse, new activity on button click

I'm a beginner but I would like to modify an older project. On the Preferences Activity, there are already few buttons, but I would like to add a new button, which, when clicked, opens a new Activity and shows an image only.

For this I declared this new activity in the Manifest:

<activity
  android:name=".VisualHelpActivity"
  android:screenOrientation="portrait"
  android:theme="@style/AppTheme" >
</activity>

I declared the button on the associated xml layout:

<Button
  android:id="@+id/button_visualhelp"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:onClick="visual_help"
  android:text="Visual Help" />

I created the new VisualHelp layout xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >
    <ImageView
      android:id="@+id/visualhelp_image"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:scaleType="fitXY"
      android:src="@drawable/guide" />

Declared its new VisualHelpActivity java file:

public class VisualHelpActivity extends TranslatableActivity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.visual_help, menu);
            return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                    return true;
            }
            return super.onOptionsItemSelected(item);
    }

    @Override
    protected void refreshLanguage() {
    }
}

… and now I’m supposed to connect it all together in the "main" PreferencesActivity, which looks as follows:

public class PreferencesActivity extends TranslatableActivity {

    public static String url = "https://www.paypal.com/cgi-bin....";

    ImageView donate;

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:
                    onBackPressed();
                    return true;
            default:
                    return super.onOptionsItemSelected(item);
            }
    }

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            setContentView(R.layout.activity_preferences);

            donate = (ImageView) findViewById(R.id.button_donate);
            donate.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                            donate(v);
                    }
            });

            Spinner s = (Spinner) findViewById(R.id.combo_language);
            Lang[] languages = LanguageUtil.Lang.values();

            s.setAdapter(new ArrayAdapter<Lang>(this,
                            android.R.layout.simple_dropdown_item_1line, languages));
            s.setSelection(getPosition(languages, LanguageUtil.getLanguage()), true);
    }

    private int getPosition(Object[] objs, Object item) {
            for (int i = 0; i < objs.length; i++) {
                    if (objs[i] == item)
                            return i;
            }
            return -1;
    }

    public void update(View v) {
            Maintenance.downloadDB(this, new onFinishListener() {

                    @Override
                    public void onFinish() {
                            LanguageUtil.loadLanguage(PreferencesActivity.this);
                    }
            });
    }

    public void copy(View v) {
            Maintenance.copyDB(this, new onFinishListener() {
                    @Override
                    public void onFinish() {
                            LanguageUtil.loadLanguage(PreferencesActivity.this);
                    }
            });
    }

    public void save(View v) {
            LanguageUtil.saveLanguage(this,
                            (Lang) ((Spinner) findViewById(R.id.combo_language))
                                            .getSelectedItem());
            LanguageUtil.loadLanguage(this);
            setResult(RESULT_OK);
            finish();
    }

    public void donate(View v) {
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(i);
    }

    public void cancel(View v) {
            finish();
    }

    @Override
    protected void refreshLanguage() {
            ((Button) findViewById(R.id.button_update)).setText(LanguageUtil
                            .getDeviceLabel(LanguageUtil.dev_update));
            ((TextView) findViewById(R.id.language_label))
            .setText(LanguageUtil.getDeviceLabel(LanguageUtil.dev_language));
    }

}

According to androidbegin.com, I should add this code into the PreferencesActivity java file (code above):

Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_visualhelp);
    button = (Button) findViewById(R.id.button_visualhelp);
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {
    Intent myIntent = new Intent(PreferencesAtivity.this,
        VisualHelpActivity.class);
        startActivity(myIntent);
        }
    });
}

The only problem is that if I try to add this new public void, multiple marker errors pop up, and if I try to include all below somewhere else, my app fails to work. So, can anyone help me out where and how to include this code part to make it work?

like image 218
Szabolcs H Avatar asked Jan 28 '26 17:01

Szabolcs H


1 Answers

add the code inside oncreate method like this in your PreferencesActivity class:-

Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_preferences);

donate = (ImageView) findViewById(R.id.button_donate);
donate.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        donate(v);
    }
});


button = (Button) findViewById(R.id.button_visualhelp);
button.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
Intent myIntent = new Intent(PreferencesAtivity.this,
    VisualHelpActivity.class);
    startActivity(myIntent);
    }
});
Spinner s = (Spinner) findViewById(R.id.combo_language);
Lang[] languages = LanguageUtil.Lang.values();

s.setAdapter(new ArrayAdapter<Lang>(this,
        android.R.layout.simple_dropdown_item_1line, languages));
s.setSelection(getPosition(languages, LanguageUtil.getLanguage()), true);
}
like image 87
riaz hasan Avatar answered Jan 31 '26 06:01

riaz hasan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!