Here is the problem right now.
create a simple axml file
Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="#+id/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/Hello" />
</LinearLayout>
and here is the register.axml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="#+id/registerID"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="70dp"
android:hint="ID" />
</LinearLayout>
i searched a lot at this forum but what i found the code was in java.
and im using c# in VS2012 to do so.
and i searched a lot internet and failed to find for it.
can anyone give some idea ?
Just like with Java Android, Xamarin.Android uses both Activities and Fragments for displaying content and navigation.
The most simple sample would be that you create two Activities. One Main Activity, with you first layout, and a second one with your register.axml layout.
The button in the Main Activity, has a Click event, which you can do whatever you want, when it is clicked, i.e. start the second Activity. This can be done with an Intent, which Android uses i.e. for navigation:
var button = FindViewById<Button>(Resource.Id.MyButton);
button.Click += (s, e) => {
var intent = new Intent(this, typeof(SecondActivity));
StartActivity(intent);
};
I recommend you to read the documentation Xamarin has, which goes through these basic things.
Related
My problem is I can't make the button I added in my custom listview to be clickable.
Here is the XML file of my custom listview:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="335dp"
android:layout_height="100dp"
android:minHeight="80dp"
android:maxHeight="250dp"
android:background="#ffffff"
android:id="#+id/list"
android:baselineAligned="false"
android:longClickable="false"
android:descendantFocusability="blocksDescendants"
android:clickable="false">
<Button
android:background="#drawable/grbgCan"
android:layout_width="15dp"
android:layout_height="20dp"
android:id="#+id/deleteMemo"
android:layout_gravity="start"
android:layout_marginLeft="270dp"
android:layout_marginTop="5dp"
android:duplicateParentState="false"
android:clickable="true" />
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/id"
android:layout_marginLeft="290dp"
android:layout_marginTop="-20dp"
android:layout_marginRight="15dp"
android:clickable="true" />
<TextView
android:id="#+id/top"
android:text="Title"
android:textColor="#ff7e7777"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="255.5dp"
android:layout_height="19.9dp"
android:paddingLeft="10dp"
android:layout_marginTop="-20dp" />
<TextView
android:id="#+id/bottom"
android:textColor="#ff7e7777"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_width="match_parent"
android:layout_height="63.3dp"
android:paddingLeft="50dp"
android:layout_gravity="left"
android:text="Note" />
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/date"
android:layout_marginLeft="250dp"
android:layout_marginRight="5dp" />
</LinearLayout>
In my main activity I tried the Btn.Click event but it only produces an error. And from what I've read in similar problems, their button was initialize in their Array Adapter but I'm using SimpleCursorAdapter because I'm fetching data from my sqlite database.
What should I do then? Please don't give me java codes because some them aren't applicable in xamarin studio since it's c#. Thanks.
You can't do it this way because you have a lot of same items in ListView with same ids
You must set OnClickListener to your button in your Adapter's getView() method like this
(this is java code for android studio, so it can differ from c# code, but gist is the same)
Button btn = (Button) convertView.findViewById(R.id.deleteMemo);
btn.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
//here you go
}
});
Try something like this (If you don't have Fragments delete the view. below)
var _view = view.FindViewById<ListView>(Resource.Id.listView1);
if (_view.ChildCount > 0){
Button _button = (Button)_view.GetItemAtPosition(0).GetChildAt(0);
}
Because you have a lot of similar objects on a list this is the only way i think to access them,
Remember that item position is relative to the current visible items on the screen and you cant access items that are not visible
While building project an error is shown and build getting failed.
Error redirects to axml file below:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="#+id/webView" />
</LinearLayout>
Error :
C:\Users\Documents\Projects\\\Resources\layout\Main.axml(1,1): Error CS0116:
A namespace cannot directly contain members such as fields or methods (CS0116)
(ABC)
Check the Build Action for the Main.axml file. It should be set to Android Resource but it sounds like it is set to Compile.
Right click the Main.axml file and use the Build Action menu to change this.
I'm making application for android using Visual Studio and Xamarin but I have problem with WebView when I create a WebView and try to see it in android emulator i get an error:
Android.Views.InflateException: Binary XML file line #1: Error inflating class android.webkit.WebView
Anybody knows where is problem?
The Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="schemas.android.com/apk/res/android";
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="#+id/webView1" />
</LinearLayout>
After trying out the Layout xml the compiler throws an error becouse of a semicolon at the end of xmlns:android="schemas.android.com/apk/res/android";. If you remove that the layout should build.
Another thing is that the url in xmlns:android attribute is missing http:// in front of the url. Without that the inflater doesn't understand the attributes correctly.
Here is a fixed Layout for you
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="#+id/webView1" />
</LinearLayout>
i'm very much a beginner with programming.. but i'm trying to develop a small android app using monodroid to store contacts in and call contacts from the address book.
Please forgive me if this is very simple but i have a text field and a button, both of which are in my Resources XML file and i want to be able to CLEAR the text in the textbox by clicking the button which will obviously be called 'Clear'.. all help is much appreciated as i'm looking forward to learning more.
Let's say you have the following layout, which I assume is similar to what you have already:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="#+id/TextField"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="#+id/Clear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Clear"/>
</LinearLayout>
Then in your activity's code you can do:
var clear = FindViewById<Button>(Resource.Id.Clear);
var textField = FindViewById<TextView>(Resource.Id.TextField);
clear.Click += (src, args) =>
{
textField.Text = "";
};
how about this?
Button ClearText=(Button) findViewById(R.id.ClearText);
ClearText.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
EditText textedit=(EditText) findViewById(R.id.textedit);
textedit.setText("");
}
});
clear must be registered as onclick handler for the button in the layout file like this
<ImageButton android:id="#+id/ClearText"
android:text="#string/ClearText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
**android:onClick="clear"**
android:src="#drawable/clear"
/>
I'm working on an application for the Android OS using Android Mono so I can program it in C#. All things are working well except for this one issue I am getting.
Basically, I have a sample code that changes the text of a button on every click. I tried to modify the sample code so that instead of changing the button, it changes the text of an xml textview object and, upon getting this error, I replaced it with an edittext object. I replaced it because it seemed common sense that editing an edittext would be easier than a textview.
Anywho, I got the same error at the same place. Whenever I try to change the textview.text or the edittext.text, the program freezes up and I get the error 'Unknown Member".
Here is the C# portion of the code:
Button ampButton = FindViewById<Button>(Resource.Id.CurrentButton);
ampButton.Click += delegate
{
SetContentView(Resource.Layout.AmpScreen);
Button ampButton2 = FindViewById<Button>(Resource.Id.CurrentButtonamp);
EditText ampData = FindViewById<EditText>(Resource.Id.ampdata);
ampButton2.Click += delegate
{
ampButton2.Text = string.Format("{0} clicks!", count2++);
ampData.Text = ampButton2.Text;
//string temp = Convert.ToString(count2) + " clicks!";
//ampData.Text=temp;
//count2++;
};
};
Here are the XML sections that are affected:
From the Main.xml:
<Button
android:id="#+id/CurrentButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/Amp"
/>
From the AmpScreen.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView id="#+id/ampImage"
android:layout_width="50px"
android:layout_height="50px"
android:layout_gravity="center"
android:src="#drawable/amp"/>
<EditText id="#+id/ampdata"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loading"/>
<Button
android:id="#+id/CurrentButtonamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Re-scan"
/>
<Button
android:id="#+id/homeButtonamp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Back"
/>
</LinearLayout>
Looks like a simple issue with your xml.
In your AmpScreen.xml on the EditText element:
id="#+id/ampdata"
should be:
android:id="#+id/ampdata"